0

結果が0で、NULL行を選択できる場合、次のストアドプロシージャで例外をスローするには、どうすればよいのでしょうか。これはMSSQL用です。どうもありがとうございました。

...

BEGIN TRY
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    SELECT
        NoteId,
        Url,
        Subject,
        Content,
        ExpiresAt,
        RemindAt
    FROM dbo.browsingnotes_Notes
    WHERE UserId = @UserId
        AND Hash = @Hash
END TRY
BEGIN CATCH
    SELECT
        NULL AS 'NoteId',
        NULL AS 'Url',
        NULL AS 'Subject',
        NULL AS 'Content',
        NULL AS 'ExpiresAt',
        NULL AS 'RemindAt'
END CATCH
4

3 に答える 3

3

動作しますかRAISERROR?または、@ Candieが指摘しているように、SQL2012THROWでは

@@RowCount最初の選択の後で確認でき、0の場合は2番目の選択を選択します。

于 2012-09-08T16:20:54.237 に答える
0

あなたはこの記事を読むことができます

THROW [ { error_number | @local_variable },
        { message | @local_variable },
    { state | @local_variable }
] [ ; ]

リンク: http: //msdn.microsoft.com/fr-fr/library/ee677615.aspx

于 2012-09-08T16:20:24.320 に答える
0

UNION他の行がない場合は、結果セットにNULL行を追加するだけで済みます。

SELECT
    NoteId, 
    Url, 
    Subject, 
    Content, 
    ExpiresAt, 
    RemindAt 
FROM dbo.browsingnotes_Notes 
WHERE UserId = @UserId 
    AND Hash = @Hash 
union
select NULL, NULL, NULL, NULL, NULL, NULL
  where not exists ( select 42 from dbo.browsingnotes_Notes where UserId = @UserId and Hash = @Hash )
于 2012-09-08T18:33:19.067 に答える