Sql 如何在游标内动态查询中为参数赋值
我的问题在于Sql 如何在游标内动态查询中为参数赋值,sql,tsql,sql-server-2012,Sql,Tsql,Sql Server 2012,我的问题在于EXEC,除了向@计数器添加值之外,所有工作都正常 如果我执行如下操作,则没有问题: EXEC('if exists(select * from '+ @table + ' where ' + @column + ' = ' + @someValue + ') print ''test'''); 如何向@计数器添加值?当我运行下面的代码时,我得到一个错误: 0附近的语法不正确 你可以用这个 CREATE PROCEDURE testSP AS BEGIN DECLARE t
EXEC
,除了向@计数器添加值之外,所有工作都正常
如果我执行如下操作,则没有问题:
EXEC('if exists(select * from '+ @table + ' where ' + @column + ' = ' + @someValue + ') print ''test''');
如何向@计数器添加值
?当我运行下面的代码时,我得到一个错误:
0附近的语法不正确
你可以用这个
CREATE PROCEDURE testSP
AS
BEGIN
DECLARE testCursor CURSOR;
DECLARE @table NVARCHAR;
DECLARE @column NVARCHAR;
DECLARE @someValue NVARCHAR;
...
BEGIN
DECLARE testCursor2 CURSOR;
DECLARE @counter INT = 0;
...
BEGIN
DECLARE @result INT = 0;
declare @sqlText nvarchar(max)= N'if exists(select * from '+ @table + ' where ' + @column + ' = ' + @someValue + ') SET @counter = 1'
DECLARE @ParmDefinition nvarchar(500) = N'@counter INT OUTPUT';
EXEC sp_executesql @sqlText, @ParmDefinition, @counter = @counter OUTPUT ;
if(@counter>0)
print 'test';
...
END
...
END
END
-您应该始终为您使用的任何varchar
变量和参数提供长度
CREATE PROCEDURE testSP
AS
BEGIN
DECLARE testCursor CURSOR;
DECLARE @table NVARCHAR;
DECLARE @column NVARCHAR;
DECLARE @someValue NVARCHAR;
...
BEGIN
DECLARE testCursor2 CURSOR;
DECLARE @counter INT = 0;
...
BEGIN
DECLARE @result INT = 0;
declare @sqlText nvarchar(max)= N'if exists(select * from '+ @table + ' where ' + @column + ' = ' + @someValue + ') SET @counter = 1'
DECLARE @ParmDefinition nvarchar(500) = N'@counter INT OUTPUT';
EXEC sp_executesql @sqlText, @ParmDefinition, @counter = @counter OUTPUT ;
if(@counter>0)
print 'test';
...
END
...
END
END