簡體   English   中英

SQL Server需要標量變量聲明

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM