![](/img/trans.png)
[英]SQL Server Stored Procedure syntax error when adding several OR clauses
[英]Syntax Error when executing SQL Server Stored Procedure
ALTER PROCEDURE dbo.encrypt
@columnname NVARCHAR(100),
@TblName NVARCHAR(200)
WITH ENCRYPTION
AS
BEGIN
SET NOCOUNT ON;
DECLARE @encryptcolumn NVARCHAR(200);
DECLARE @AlterQuery NVARCHAR(200);
DECLARE @TblName NVARCHAR(200);
OPEN SYMMETRIC KEY Password_Key DECRYPTION BY CERTIFICATE PasswordCertificate;
SET @encryptcolumn = (@columnname + 'encrypt');
IF @encryptcolumn IS NOT NULL
SET @AlterQuery = 'ALTER TABLE ['+@TblName+'] add ['+@encryptcolumn+'] varbinary(max)null);'
EXEC sp_executesql @AlterQuery;
UPDATE @TblName
SET @encryptcolumn = ENCRYPTBYKEY(KEY_GUID('datamartSymKey'), CONVERT(varbinary, @columnname))
END
GO
當我嘗試執行此操作時,將引發以下錯誤:
變量名“ @TblName”已經聲明。 變量名稱在查詢批處理或存儲過程中必須唯一。
您收到此錯誤的原因是您已經在過程中傳遞了@tblName
。 您可以通過刪除聲明並將值通過過程調用傳遞來解決此問題。
除此之外,您還必須使用EXEC
運行更新查詢,因為表名可能會更改。
ALTER PROCEDURE dbo.encrypt @columnname nvarchar(100), @TblName nvarchar(200) WITH ENCRYPTION AS BEGIN SET NOCOUNT ON;
DECLARE @encryptcolumn nvarchar(200);
DECLARE @AlterQuery nvarchar(200);
OPEN SYMMETRIC KEY Password_Key DECRYPTION BY CERTIFICATE PasswordCertificate;
set @encryptcolumn=(@columnname + 'encrypt');
if @encryptcolumn is not null
SET @AlterQuery='ALTER TABLE ['+@TblName+'] add ['+@encryptcolumn+'] varbinary(max)null);'
exec sp_executesql @AlterQuery;
DECLARE @sqlCommand varchar(1000)
SET @sqlCommand = 'UPDATE ' +@TblName + ' SET ' + @encryptcolumn + ' = ENCRYPTBYKEY(KEY_GUID(''datamartSymKey''),CONVERT(varbinary, ' + @columnname + '))'
EXEC (@sqlCommand)
END
GO
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.