【发布时间】:2014-07-29 18:02:26
【问题描述】:
我已经创建了一个证书,现在我想删除证书签名并删除该证书。当我直接提供证书名称时,它正在工作,但是当我使用局部变量来提供名称时,它给了我语法错误。
我也尝试过不同的数据类型
text, varbinary(max), char(200), varchar(200), nvarchar(200)
这些数据类型都不起作用。
declare @certificate nvarchar(200)
set @certificate = 'ITManagerCertificate'
begin transaction
use DBwork
-- remove signature from stored procedure
drop signature from Report_Manager
by certificate @certificate
-- drop certificate
--DROP CERTIFICATE @certificate
if @@ERROR > 0
begin
rollback transaction
end
else begin
commit transaction
end
【问题讨论】:
-
我不认为你可以参数化它;您需要改用动态 SQL。
-
您需要学习如何阅读documentation 中的语法图。对于
certificate,它表示CERTIFICATE cert_name,这意味着它需要一个文字名称——不是字符串,也不是变量。如果你被允许这样的事情,他们明确指出。例如。如果允许一个变量,它将改为CERTIFICATE cert_name | @cert_name_variable
标签: sql sql-server sql-server-2005 sql-server-2008-r2