需要建一个游标,像下面的样子
declare c cursor for
select  col1...
from    server1.db1.dbo.table1
...
其中,server1.db1是不确定的,不知道这样的功能可不可以实现?

解决方案 »

  1.   

    用动态sql语句,把游标和处理过程都写在里面。
    然后执行动态sql语句
      

  2.   

    declare @sql varchar(4000),@lnksrv varchar(40)
    set @lnksrv='server1.db1.'
    set @sql='declare c cursor for
    select  col1...
    from    '+@lnksrv +'dbo.table1'
    exec(@sql)
      

  3.   

    例如
    CREATE TABLE TestA(A INT, B VARCHAR(3))
    INSERT INTO TestA
        SELECT 1, 'A'
        UNION ALL SELECT 2, 'B'
        UNION ALL SELECT 3, 'C'
        UNION ALL SELECT 4, 'D'CREATE TABLE TestB(A INT, B VARCHAR(3))
    INSERT INTO TestB
        SELECT 5, 'E'
        UNION ALL SELECT 6, 'F'
        UNION ALL SELECT 7, 'G'
        UNION ALL SELECT 8, 'H'DECLARE @SQL VARCHAR(1000)
    DECLARE @T VARCHAR(10)
    SET @T = 'TestA'SET @SQL = 'DECLARE CUR CURSOR FOR SELECT A, B FROM ' + @T
    SET @SQL = @SQL + '
    DECLARE @A INT, @B VARCHAR(3)
    OPEN CUR
    FETCH FROM CUR INTO @A, @B
    WHILE @@FETCH_STATUS = 0
    BEGIN
        PRINT CAST(@A AS VARCHAR) + @B
        FETCH FROM CUR INTO @A, @B
    END
    CLOSE CUR
    DEALLOCATE CUR'EXEC(@SQL)
    DROP TABLE TestA,TestB