カーソルを使用して複数のテーブルからデータを抽出する方法
P粉141035089
2023-08-16 13:12:27
<p>次のような複数のテーブルを返すクエリがあります。 </p>
<pre class="brush:php;toolbar:false;">SELECT テーブル名、データベース名 '.' テーブル名、列名
FROM DBC.列
WHERE ColumnName = 'id'</pre>
<p>特定のテーブルのみを取得するには、これらのテーブルに格納されている情報を調べてループする必要があります。 </p>
<p>'LOOP' とカーソルを使用して以下のコードを試してみましたが、<code>無効なクエリ</code> (コードはここから来ています) と表示されます: </p>
<pre class="brush:php;toolbar:false;">DECLARE カーソル_テーブル CURSOR FOR
SELECT データベース名 || '.' || テーブル名
FROM DBC.列
WHERE 列名 ='id';
カーソルテーブルを開く;
ラベル1:
ループ
カーソルテーブルを tbName にフェッチします。
IF (SQLSTATE ='02000') THEN
ラベル 1 を残します。
終了 IF;
大文字と小文字の場合 (
選択数(*)
prd3_db_tmd.K_PTY_NK01 から
WHERE id = 0 ) > 0
THEN tbName
終わり
エンドループラベル1;
CLOSE カーソルテーブル;
END;</pre>
<p>この問題はどのように解決すればよいでしょうか?追加のストアド プロシージャを使用する必要がありますか? DBMSはTeradataです。 </p>
これが SQL Server の場合は、次の SQL カーソル を参照してください。カーソル宣言とその中のコードを編集しました。 要件とは異なる場合がありますが、簡単に変更できると思います
リーリーTeradata でカーソルを使用できるのはストアド プロシージャだけであるため、ストアド プロシージャが必要です。
リーリー