認証がこのようにパスした場合にユーザートークンを返すストアドプロシージャがあります
BEGIN
SET FMTONLY OFF --Tricky Part
DECLARE @token uniqueidentifier
DECLARE @user_id as int
SET @user_id = (SELECT UserID FROM Users
WHERE @email = Email AND @password = PasswordKey)
IF @user_id IS NOT NULL
BEGIN
SET @token = NEWID()
UPDATE Users SET Token = @token
WHERE UserID = @user_id
SELECT * FROM Users WHERE UserID = @user_id
END
END
それがなければSET FMTONLY OFF
トークンを返しますが、ユーザーが正しいカーディナリティを入力した場合にのみ、それ以外の場合はエラーが発生します
タイプ 'Token' のメンバーには、データ リーダーに同じ名前の対応する列がありません。
発生します。
Product
これで、ストアド プロシージャに渡す ID によって決定される単一の値を返す別のストアド プロシージャ (これとほぼ同じ) があり、存在しないものを送信しても正常に動作します。関数のインポートでは、ストアド プロシージャの 1 つで返される列が表示され、別のストアド プロシージャでは返されない列が表示されます。わかりやすくするために、ストアド プロシージャと関数のインポートを示す 2 つの画像を次に示します。