0

我想取消 Tsql 游标,但将它传递给字符串变量而不是 SELECT 语句。有可能吗?你会怎么做?我下面的内容不起作用。寻找类似的东西:

DECLARE @sql varchar(1000)
SET @sql = 'SELECT sysobjects.name 
            FROM [#database#].[dbo].sysobjects' 
SET @sql = REPLACE(@sql, '#database#', @MyDBName) 
DECLARE c CURSOR LOCAL FOR @sql
4

1 回答 1

0

你必须使整个光标动态,你必须使用sp_executesql,这应该工作:

DECLARE @sql nvarchar(1000) -- needs to be nvarchar!
SET @sql = 'DECLARE c CURSOR FOR SELECT sysobjects.name 
            FROM [#database#].[dbo].sysobjects' 
SET @sql = REPLACE(@sql, '#database#', @MyDBName) 
EXEC sp_executesql @sql
OPEN c
....

但是,当您想在 SQL Server 中使用动态 SQL 时,请先在此处阅读:强制动态 SQL 信息链接

于 2013-06-04T11:40:56.440 回答