[英]SQL Server demands scalar variable declaration
我在Management Studio中使用以下SQL代碼創建存儲過程。 嘗試執行查詢時,出現錯誤消息:
必須聲明標量變量“ @Id”
但是我已經聲明了@Id
可能是什么問題?
我的代碼:
CREATE PROCEDURE [dbo].[DecryptMyName]
(@Id Int,
@MyName varbinary(MAX))
AS
GO
OPEN SYMMETRIC KEY SymmetricKeyxx
DECRYPTION BY CERTIFICATE Certificatexx;
GO
-- Now list the original ID, the encrypted ID
SELECT CONVERT(nvarchar, DecryptByKey(MyName))
FROM dbo.MyTable WHERE Id=@Id ;
-- Close the symmetric key
CLOSE SYMMETRIC KEY SymmetricKeyxx;
GO
存儲過程正文中不允許使用GO
。 我建議您始終將主體括在BEGIN
/ END
以避免出現此問題。
這樣行嗎?
CREATE PROCEDURE [dbo].[DecryptMyName] (
@Id Int ,
@MyName varbinary(MAX)
) AS
BEGIN
OPEN SYMMETRIC KEY SymmetricKeyxx
DECRYPTION BY CERTIFICATE Certificatexx;
-- Now list the original ID, the encrypted ID
SELECT CONVERT(nvarchar, DecryptByKey(MyName))
FROM dbo.MyTable WHERE Id=@Id ;
-- Close the symmetric key
CLOSE SYMMETRIC KEY SymmetricKeyxx;
END;
如果沒有,您將需要使用動態SQL。
只需在查詢中刪除“開始”字樣即可
這條路:
CREATE PROCEDURE [dbo].[DecryptMyName]
(@Id Int,
@MyName varbinary(MAX))
AS
OPEN SYMMETRIC KEY SymmetricKeyxx
DECRYPTION BY CERTIFICATE Certificatexx;
-- Now list the original ID, the encrypted ID
SELECT CONVERT(nvarchar, DecryptByKey(MyName))
FROM dbo.MyTable WHERE Id=@Id ;
-- Close the symmetric key
CLOSE SYMMETRIC KEY SymmetricKeyxx;
對於最佳實踐,請始終對存儲過程使用BEGIN和END語句,如下所示:
CREATE PROCEDURE [dbo].[DecryptMyName]
(@Id Int,
@MyName varbinary(MAX))
AS
BEGIN
OPEN SYMMETRIC KEY SymmetricKeyxx
DECRYPTION BY CERTIFICATE Certificatexx;
-- Now list the original ID, the encrypted ID
SELECT CONVERT(nvarchar, DecryptByKey(MyName))
FROM dbo.MyTable WHERE Id=@Id ;
-- Close the symmetric key
CLOSE SYMMETRIC KEY SymmetricKeyxx;
END
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.