5

次のストアドプロシージャがあります。

ALTER PROCEDURE [dbo].[CheckAdminExists]
    @SID NVARCHAR(50),
    @AdminName NVARCHAR(MAX)
AS 
    SELECT
        Administrator.ID
    FROM
        Administrator
    WHERE
        Administrator.SID = @SID
        AND Administrator.Name = @AdminName
GO

次に、次のようなコードで別のSPを作成します。

IF NOT NULL (EXECUTE CheckAdminExists 'S-1','Admin')
--do something
ELSE
--do something else

それを行うための正しい構文は何ですか?

4

2 に答える 2

11

このためにストアドプロシージャを使用せず、代わりに関数を使用して管理者が存在するかどうかを確認する必要があります。

次に、新しいストアドプロシージャで、CheckAdminExists関数を呼び出します。

CREATE FUNCTION [dbo].[CheckAdminExists] (@SID NVARCHAR(50), @AdminName NVARCHAR(MAX))
RETURNS BIT
AS 
BEGIN
DECLARE @RetVal INT

SELECT @RetVal = COUNT(Administrator.ID)
FROM
    Administrator
WHERE
    Administrator.SID = @SID
    AND Administrator.Name = @AdminName

IF @RetVal > 0 
BEGIN
   RETURN 1
END
    RETURN 0
END

Then in your stored procedure call the function:

DECLARE @AdminExists BIT
SELECT @AdminExists = [dbo].[CheckAdminExists]

IF @AdminExists 
BEGIN
   -- your code 
END
ELSE
BEGIN
  -- your code
END
于 2012-04-20T14:42:43.870 に答える
3

確かに、を使用してFUNCTIONください。

ただし、1を超える値を返す必要がある場合は、OUTPUTパラメーターを使用してください。

于 2012-04-20T14:45:29.533 に答える