[英]SQL Server Dynamic SQL Execution
我有一个动态SQL查询
DECLARE @ItemAreaCode NVARCHAR(MAX) = 'A062',
@SQLStringDropTable NVARCHAR(MAX);
SET @SQLStringDropTable= 'DROP TABLE' + ' ' +
'[@ItemAreaCode].[ChangedRMAllocation]'
PRINT @ItemAreaCode
EXEC sp_executesql @SQLStringDropTable , N'@ItemAreaCode NVARCHAR(MAX)', @ItemAreaCode;
但是当我执行此操作时,出现以下错误:
消息3701,第11级,州5,第1行
无法删除表“ @ ItemAreaCode.ChangedRMAllocation”,因为该表不存在或您没有权限。
和打印的查询是..
DROP TABLE [@ItemAreaCode].[ChangedRMAllocation];
我需要的是:
DROP TABLE [A062].[ChangedRMAllocation];
您正在动态SQL中将参数设置为字符串。 @ItemAreaCode
不应包括在内。
这应该工作:
DECLARE @ItemAreaCode NVARCHAR(MAX) = 'A062',
@SQLStringDropTable NVARCHAR(MAX);
SET @SQLStringDropTable= 'DROP TABLE' + ' ['
+ @ItemAreaCode + '].[ChangedRMAllocation]'
PRINT @ItemAreaCode
EXEC (@SQLStringDropTable);
希望这可以帮助
您可能打算扩展变量:
DECLARE @ItemAreaCode sysname = 'A062',
@SQLStringDropTable NVARCHAR(MAX);
SET @SQLStringDropTable =
'DROP TABLE ' + quotename(@ItemAreaCode) + '.[ChangedRMAllocation]';
EXEC (@SQLStringDropTable);
尝试这个
DECLARE @ItemAreaCode NVARCHAR(MAX) = 'A062'
,@SQLStringDropTable NVARCHAR(MAX);
SET @SQLStringDropTable = 'DROP TABLE [' + @ItemAreaCode + '].[ChangedRMAllocation]'
EXEC (@SQLStringDropTable)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.