我是一名尝试学习T-SQL的Oracle开发人员。
我有一个表中有一列(table_name
)。我需要能够遍历所有行并查找给定表的所有列。然后我需要将它的结果输出到文件中。
在Oracle中,以这种方式使用游标非常简单:
cursor my_curr is select table_name from my_table;
for x in my_curr loop
select column_name from user_tab_columns
where table_name = x.table_name;
utl_file ..... (writing result to an OS file)
end loop;
T-SQL中的上述内容是什么?我如何使用游标变量将其传递给查询?
谢谢, 尤金
答案 0 :(得分:1)
为列结果和游标声明一个变量。
declare @name varchar(100)
declare my_curr cursor
for select table_name from my_table;
打开光标
open my_curr
将第一行取入变量
fetch from my_curr into @name
@@Fetch_Status
是获取是否成功
while @@Fetch_Status=0
begin
使用从游标中获取的变量,与系统表进行比较以获取列。较新版本的SQL Server也可以使用Information_Schema,但这适用于所有版本
select c.name from syscolumns c
inner join sysobjects o on c.id = o.id
where o.name = @name;
--utl_file ..... (writing result to an OS file)
获取下一行
fetch next from my_curr into @name
end
处理光标
close my_curr
deallocate my_curr