sql - 具有可变种子的同一性

标签 sql t-sql variables dynamic identity

我有这段代码,我正在尝试通过变量设置身份种子

DECLARE @iKeyX INT

SELECT @iKeyX = MAX(KeyX) FROM Temporales..tmp_Orders

IF (@iKeyX = NULL)
   SET @iKeyX = 1
ELSE
   SET @iKeyX = @iKeyX + 1

IF OBJECT_ID('tempdb..#tmp_Orders','U') IS NOT NULL
   DROP TABLE #tmp_Orders

SELECT  IDENTITY(INT, @iKeyX, 1) AS KeyX,
        0 AS Valido, 
        OrderNumber, 
        OrderType, 
        Code, 
        Size, 
INTO #tmp_Orders
FROM TableWithData

为什么 SQL 总是告诉我“'@ iKeyX' 附近的语法不正确”?

最佳答案

这似乎是 old bug在 SQL Server 中,这个问题从未得到修复。要解决该问题(如链接中的建议),请将命令构建为字符串,然后执行该字符串。

链接中的解决方法:

DECLARE @SQL varchar(8000)
DECLARE @myident int
SET @myident = 100
SET @sql = 'SELECT IDENTITY(INT, ' + CAST(@myident as varchar) + ', 1)    AS ident INTO #T2'
EXEC(@sql)
SELECT @@identity

关于sql - 具有可变种子的同一性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11247669/

相关文章:

python - 将 cmd 命令的过滤输出存储在变量中

sql - 优化sql查询

sql - Postgresql 在使用大 OFFSET 时返回随机行

Java:使用条件创建内部联接

sql - 找到最低的非连续值

java - 对实例和声明的误解

mysql - 如何在MySQL数据库中动态生成字符串实例?

sql - 如何获取关系数据库中2个随机表之间的关系

SQL:在Where子句中使用Len()在一次操作中过滤NULL和BLANKS

c++ - 动态引用头变量c++