sql 游标将结果插入 table

sql cursor insert result into a table

我创建了一个游标,它遍历所有数据库并显示每个数据库的 1 条记录。

我希望将记录插入到 1 table 我可以查看的地方。查询可能会更改,这就是为什么我不想为特定查询创建 table 结构并插入它的原因。我想使用 "select into" 子句,但是在光标第二次运行时会失败

DECLARE @DB_Name varchar(100) 
DECLARE @Command nvarchar(200)
DECLARE database_cursor CURSOR FOR SELECT name FROM #DBNAME

OPEN database_cursor

FETCH NEXT FROM database_cursor INTO @DB_Name

WHILE @@FETCH_STATUS = 0 
BEGIN 
     SELECT @Command = 'use [' + @DB_Name + '] Select '''+ @DB_Name + ''' ,'+

 --Enter query below
 '* from authentication where username like ''%clair@indicater%'' and password = ''Rohan2410'''

 --  print @Command
 EXEC sp_executesql @Command


 FETCH NEXT FROM database_cursor INTO @DB_Name 
END

CLOSE database_cursor 
DEALLOCATE database_cursor

你最好使用 INSERT INTO ... 而不是 SELECT INTO,像这样:

DECLARE @DB_Name varchar(100) 
DECLARE @Command nvarchar(200)
DECLARE database_cursor CURSOR FOR SELECT name FROM #DBNAME

OPEN database_cursor

FETCH NEXT FROM database_cursor INTO @DB_Name

WHILE @@FETCH_STATUS = 0 
BEGIN

     SELECT @Command = 'use [' + @DB_Name + '] 

     IF OBJECT_ID(''tempdb..##output'') IS NULL
         BEGIN
            SELECT NULL AS DB_Name,* 
            INTO ##output
            FROM authentication WHERE 1=0
         END

     INSERT INTO ##output
     Select '''+ @DB_Name + ''' ,'+

 --Enter query below
 '* from authentication where username like ''%clair@indicater%'' and password = ''Rohan2410'''

 --  print @Command
 EXEC sp_executesql @Command


 FETCH NEXT FROM database_cursor INTO @DB_Name 
END

CLOSE database_cursor 
DEALLOCATE database_cursor

SELECT * FROM ##output

DROP TABLE ##output

基本上,在第一次游标迭代时,我们将创建一个具有正确结构的空临时 table。然后我们只需插入该临时文件 table.