1

我是一名试图学习 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 中,上述内容的等价物是什么?我将如何使用游标变量将其传递给查询?

谢谢,尤金

4

1 回答 1

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
于 2012-07-24T18:47:21.823 回答