游标定义DECLARE 游标名称 [INSENSITIVE] [SCROLL]
CURSOR FOR select语句
[FOR{READ ONLY|UPDATE[OF 列名字表]}]我想在"SELECT语句"中引入参数,应该怎么写?

解决方案 »

  1.   


    declare @id int
    set @id=5declare cur cursor for select * from tb where id=@id open cur
    ....
    ??
      

  2.   

    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;
      

  3.   

    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;
      

  4.   

    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就报错了大师,再次帮助一下