Как создать «поддельную» строку в операторе SELECT хранимой процедуры - PullRequest
2 голосов
/ 26 апреля 2011

У меня есть хранимая процедура proc_Audit_GetAppEmployedRelative, цель которой - вернуть информацию о родственниках предыдущих заявителей. Следующий оператор SELECT из процедуры:

Select  a.RowID, 
        a.ApplicantRowID,
        a.RelativeName as SearsRelName,
                Case When a.RelativeName <> 'N/A' then 'Yes' End as RelY,
                Case When a.RelativeName = 'N/A' then 'Yes' End as RelN,
        a.Relationship as SearsRelRelation,
                a.RelativeJob as SearsRelJobType,
        a.RelativeLoc as SearsRelJobLoc
    From dbo.App_EmplRelative a(nolock)
    Where a.ApplicantRowID = @ApplicantRowID

У меня есть требование вернуть RelN = Yes, даже если другие поля в таблице пусты App_EmplRelative. В основном заявитель не имеет никакой относительной рабочей информации. Мне просто нужно подделать строку, чтобы получить RelN = Yes в форме. Пожалуйста, дайте мне знать, как мне создать фальшивую строку, также мне все еще нужен вышеуказанный оператор select в proc.

Ответы [ 2 ]

1 голос
/ 26 апреля 2011
Select a.RowID,
       a.ApplicantRowID,
       a.RelativeName as SearsRelName,
       Case
         When a.RelativeName <> 'N/A' then 'Yes'  End as RelY,
       Case
         When a.RelativeName = 'N/A'
            or a.ApplicantRowID is null then 'Yes' End as RelN,
       a.Relationship as SearsRelRelation,
       a.RelativeJob  as SearsRelJobType,
       a.RelativeLoc  as SearsRelJobLoc
From   (SELECT 1 AS C) T
       LEFT JOIN dbo.App_EmplRelative a(nolock)
         ON a.ApplicantRowID = @ApplicantRowID  
1 голос
/ 26 апреля 2011

Вы можете поместить набор результатов в переменную и затем проверить, является ли набор результатов пустым.Если это так, вы можете создать поддельную строку, выбрав фактические значения.Есть лучшие способы, но это то, что приходит мне в голову прямо сейчас.

SELECT TOP 1 null, null, null, 'Yes', null, null, null 
FROM dbo.App_EmplRelative a (nolock) 

Я бы предпочел, чтобы сначала был тест для @ApplicationRowId, а затем запрашивался только тогда, когда он действителен, или обрабатывал нуль насторона кодирования.ПРИМЕЧАНИЕ. В 2005 году вы также можете кодировать на языках .NET и обрабатывать там подобные манипуляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...