我正在尝试创建一个用新主键填充表的 SQL 脚本。
我目前从互联网搜索中获得的内容如下
DECLARE @IntVariable int;
DECLARE @Stringkey varchar(2);
DECLARE @SQLString nvarchar(500);
DECLARE @Intupdater nvarchar(500);
SET @IntVariable = 00000001;
SET @Stringkey = 'CD';
SET @SQLString = N'UPDATE Tri_Damen_Live.trimergo.calendar_details SET details_key = @Stringkey + @IntVariable';
SET @Intupdater = N'@IntVariable = @IntVariable+1'
EXECUTE sp_executesql @SQLString , N'@IntVariable INT' , N'@Stringkey VARCHAR(2)', @IntVariable, @Stringkey;
我得到的错误是
消息 102,级别 15,状态 1,第 1 行
'=' 附近的语法不正确。
Msg 137, Level 15, State 2, Line 1
必须声明标量变量“@Stringkey”。
我有几个关于我的问题的问题,希望有人能帮助我
第一个问题:看来我的int
增量器是错误的。有没有办法为 int 制作更新变量语句?
第二:我将 int 声明为 00000001。但我怀疑它是否会保持这种状态。我这样做的原因是因为密钥总共需要 10 个字符长(例如“CD00000001”等)这样工作还是有其他方法?
第三个问题:如主题所述。'必须声明标量变量“@Stringkey”。错误。我已经删除了 stringkey 部分,但它说关于Int
变量的相同错误。我将它们声明在顶部并设置它们。我错过了什么?
侧面资料:
此函数将用于具有不同表大小的多个数据库。所以我需要这种函数来说明它没有固定数量的更新语句。
此处创建的主键必须是Varchar(10)
长度始终为 10 个字符的字符串 ( )。看起来像一个愚蠢的要求,但它已被选择使用这个系统。
我正在使用 Microsoft SQL Server 2012 来运行它。