2017-09-22 10 views
0

複数のテーブルにわたってデータを検証する必要があります。本質的には、私は与えられたテーブルのすべてのフィールドを使用して、次のステートメントのループを記述したいと思います。SelectまたはFor-Loopで変数を使用するOracle SQL

sql> select fld1, count(*) 
from table1 
group by fld1 
; 

少なくとも2つの変数を作成する必要があると私は考えています。最初の変数は、テーブル名を指定するよう求められます。

秒varが結果に基づくものになるだろう:私も一時テーブルを作成し、そのに選択する必要があり

select column_name from user_tab_col_statistics where table_name = table_variable 

答えて

0

私の理解によれば、一時テーブルに値を格納することができます。すべてのテーブルの列のための

1.Fetch表名変数Var_Table_nameに入れ&列名、Var_Col

select Var_Col, count(*) into Var1,Var2 from Var_Table group by fld1 ; 

。あなたは、一時テーブルに一時テーブルを作成し、下記のように値を挿入して保存することができます。

1.Var_Table_name

2.Var_Col

3.Var1

4.Var2

0

PL/SQLは、プロンプトが表示されません。一方、SQL * Plusは置換変数の入力を求めます。次の例を参照してください。

MPOWEL01> @stack 
MPOWEL01> 
MPOWEL01> select table_name, column_name from user_tab_col_statistics where table_name = upper('&tbl_nm') 
    2 order by column_name; 
Enter value for tbl_nm: marktest 
old 1: select table_name, column_name from user_tab_col_statistics where table_name = upper('&tbl_nm') 
new 1: select table_name, column_name from user_tab_col_statistics where table_name = upper('marktest') 

TABLE_NAME      COLUMN_NAME 
------------------------------ ------------------------------ 
MARKTEST      FLD1 
MARKTEST      FLD2 
MARKTEST      FLD3 
MARKTEST      FLD4 

MPOWEL01> 

set verify off出力から置換メッセージ行を削除します。

PL/SQLでは、SELECT INTO変数を使用するか、カーソルを使用する必要があります。

私はあなたが実行したいSELECT文を生成するためにSQLを使うことができるかもしれないと思っていますが、「データの検証」というのはどういう意味ですか?方法を確認しますか?どのような標準を使用して?

関連する問題