수색…
각 데이터베이스의 인덱스별로 모든 행을 쿼리하는 커서의 예
여기서 커서는 모든 데이터베이스를 순환하는 데 사용됩니다.
또한 동적 SQL의 커서는 첫 번째 커서가 반환 한 각 데이터베이스를 쿼리하는 데 사용됩니다.
이것은 커서의 연결 범위를 보여주기위한 것입니다.
DECLARE @db_name nvarchar(255)
DECLARE @sql nvarchar(MAX)
DECLARE @schema nvarchar(255)
DECLARE @table nvarchar(255)
DECLARE @column nvarchar(255)
DECLARE db_cursor CURSOR FOR
SELECT name FROM sys.databases
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @db_name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = 'SELECT * FROM ' + QUOTENAME(@db_name) + '.information_schema.columns'
PRINT ''
PRINT ''
PRINT ''
PRINT @sql
-- EXECUTE(@sql)
-- For each database
DECLARE @sqlstatement nvarchar(4000)
--move declare cursor into sql to be executed
SET @sqlstatement = 'DECLARE columns_cursor CURSOR FOR SELECT TABLE_SCHEMA, TABLE_NAME, COLUMN_NAME FROM ' + QUOTENAME(@db_name) + '.information_schema.columns ORDER BY TABLE_SCHEMA, TABLE_NAME, ORDINAL_POSITION'
EXEC sp_executesql @sqlstatement
OPEN columns_cursor
FETCH NEXT FROM columns_cursor
INTO @schema, @table, @column
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @schema + '.' + @table + '.' + @column
--EXEC asp_DoSomethingStoredProc @UserId
FETCH NEXT FROM columns_cursor --have to fetch again within loop
INTO @schema, @table, @column
END
CLOSE columns_cursor
DEALLOCATE columns_cursor
-- End for each database
FETCH NEXT FROM db_cursor INTO @db_name
END
CLOSE db_cursor
DEALLOCATE db_cursor
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow