declare @id int set @id=5declare cur cursor for select * from tb where id=@id open cur .... ??
DECLARE @param varchar(10); SET @param = 'value';EXEC sp_executesql N'DECLARE cur CURSOR FOR SELECT xx FROM tb WHERE col = @param', N'@param varchar(10)',@param;OPEN cur;DECLARE @xx varchar(10); FETCH NEXT FROM cur INTO @xx; WHILE @@FETCH_STATUS=0 BEGIN --do someing FETCH NEXT FROM cur INTO @xx; ENDCLOSE cur; DEALLOCATE cur;
DECLARE @param varchar(10); SET @param = 'value';DECLARE @tbname sysname; SET @tbname = '表名'DECLARE @cmd nvarchar(4000); SET @cmd = 'DECLARE cur CURSOR FOR SELECT xx FROM ['+@tbname+'] WHERE col = @param';EXEC sp_executesql @cmd, N'@param varchar(10)',@param;OPEN cur;DECLARE @xx varchar(10); FETCH NEXT FROM cur INTO @xx; WHILE @@FETCH_STATUS=0 BEGIN --do someing FETCH NEXT FROM cur INTO @xx; ENDCLOSE cur; DEALLOCATE cur;
DECLARE @param varchar(10); SET @param = 'value';EXEC sp_executesql N'DECLARE cur CURSOR FOR SELECT xx FROM tb WHERE col = @param', N'@param varchar(10)',@param;要是参数是数据库,应该怎么写我写成EXEC(SQL)这样的格式是可以的,但用EXEC sp_executesql就报错了大师,再次帮助一下
declare @id int
set @id=5declare cur cursor for select * from tb where id=@id open cur
....
??
SET @param = 'value';EXEC sp_executesql N'DECLARE cur CURSOR FOR
SELECT xx FROM tb WHERE col = @param',
N'@param varchar(10)',@param;OPEN cur;DECLARE @xx varchar(10);
FETCH NEXT FROM cur INTO @xx;
WHILE @@FETCH_STATUS=0
BEGIN
--do someing
FETCH NEXT FROM cur INTO @xx;
ENDCLOSE cur;
DEALLOCATE cur;
SET @param = 'value';DECLARE @tbname sysname;
SET @tbname = '表名'DECLARE @cmd nvarchar(4000);
SET @cmd = 'DECLARE cur CURSOR FOR
SELECT xx FROM ['+@tbname+'] WHERE col = @param';EXEC sp_executesql @cmd,
N'@param varchar(10)',@param;OPEN cur;DECLARE @xx varchar(10);
FETCH NEXT FROM cur INTO @xx;
WHILE @@FETCH_STATUS=0
BEGIN
--do someing
FETCH NEXT FROM cur INTO @xx;
ENDCLOSE cur;
DEALLOCATE cur;
SET @param = 'value';EXEC sp_executesql N'DECLARE cur CURSOR FOR
SELECT xx FROM tb WHERE col = @param',
N'@param varchar(10)',@param;要是参数是数据库,应该怎么写我写成EXEC(SQL)这样的格式是可以的,但用EXEC sp_executesql就报错了大师,再次帮助一下