【问题标题】:SQL Server ERROR Must declare the scalar variableSQL Server 错误 必须声明标量变量
【发布时间】:2016-10-27 15:02:29
【问题描述】:

我必须截断表格但出现错误

必须声明标量变量“@Table”。

代码:

DECLARE @Table VARCHAR(20) = 'ABC'

AS
BEGIN
    EXEC ('TRUNCATE TABLE abcDB.dbo.'+@Table) AT [Server]
END

【问题讨论】:

  • AS 在那里做什么?
  • @Martin Smith 您现在可以通过擦除 AS 并在 begin 和 end 块中写入查询来解决
  • @Martin Smith 感谢您的建议和时间

标签: sql-server database


【解决方案1】:

AS关键字之后声明变量。

BEGIN
DECLARE @Table VARCHAR(20) = 'ABC'
EXEC ('TRUNCATE TABLE abcDB.dbo.'+@Table) AT [Server]
END

【讨论】:

  • 变量在 TSQL 中不是块作用域。
  • @ahmed abdelqader 我投了票,但它说 15+ 声望可以投票,我是新成员。很抱歉
  • 问题是变量名被添加到换行符中
  • @MartinSmith,你是对的,问题与 begin 和 End 无关,它与 AS 关键字有关,所以我的答案是有效的,我编辑了它
  • @ahmed abdelqader 投票给我以提高我的声誉,以便我有资格投票............
【解决方案2】:

检查你是否有任何限制(外键)。如果存在则删除它

DECLARE @Table VARCHAR(20) = 'ABC'

BEGIN
    EXEC ('TRUNCATE TABLE abcDB.dbo.'+@Table)
END 

【讨论】:

  • 感谢您的宝贵时间
  • @M.K.S 欢迎。如果对您有帮助,请接受任何一个答案,这将有助于人们在这个社区中成长。
  • 我是新会员,我的声誉不允许我接受任何问题....我已经尝试过,但未能接受这些问题。投票给我以提高我的声誉
  • 非常感谢,现在我有资格接受任何问题
【解决方案3】:

使用sp_executesql:

DECLARE @Table VARCHAR(20) = 'ABC'
SET @sql='TRUNCATE TABLE abcDB.dbo.' + @Table
EXEC sp_executesql @sql

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多