1

私は T-SQL を学ぼうとしている Oracle 開発者です。列が 1 つあるテーブルがあります ( 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 サーバーも 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 に答える