首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >超过SQL Server 2005上脚本中变量声明的最大数量

超过SQL Server 2005上脚本中变量声明的最大数量
EN

Stack Overflow用户
提问于 2012-01-23 13:03:02
回答 2查看 209关注 0票数 2

我目前正在开发的一个应用程序将生成一个SQL脚本来填充数据库。脚本中的单个事务如下所示(请注意,我已经更改了表/变量名称;-)

代码语言:javascript
运行
复制
USE MyDatabase

BEGIN TRANSACTION

SET XACT_ABORT ON
DECLARE @Foo int

SET IDENTITY_INSERT Table1 ON 
INSERT INTO Table1 [...]
SET IDENTITY_INSERT Table1 OFF 

SET IDENTITY_INSERT Table2 ON 
INSERT INTO Table2 [...]
SET IDENTITY_INSERT Table2 OFF 

INSERT INTO Table3 [...]

-- Here I reference @Foo
SET @Foo = dbo.SomeStoredProcedure()
-- Use @Foo in some query

COMMIT TRANSACTION

GO

SET NOCOUNT ON

然后,此脚本将生成这些事务的n,然后在SQL Server2005上执行,以便使用n记录填充数据库。

我看到的问题是上面所示的@Foo变量的声明。在运行脚本时,一旦达到65535条记录,我就会得到以下错误:

代码语言:javascript
运行
复制
The variable name '@Foo' has already been declared.
Variable names must be unique within a query batch or stored procedure.

我认为这是一个误导性的错误消息,因为在我达到65535之前一切都很好,这个数字(2^16-1)的重要性让我相信我遇到了某种脚本限制。

我曾尝试在脚本的顶部定义一次@Foo变量,并在每个事务中重用它。但这并不起作用,因为似乎每个事务都有自己的作用域。

创建额外的作用域级别(即内部事务)并在更深的作用域中声明变量是否有助于解决此问题?

关于解决这个问题的最佳方法,还有其他建议吗?

EN

Stack Overflow用户

发布于 2012-01-23 14:18:18

尝试使用Go分隔符,同时更改dynmc的数据类型。变量。您超出了它的范围,而"INT“在SQL服务器中是一种循环数据类型。当-65536到65535的周期结束时,它将到达相同的地址。

票数 -1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8967396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档