
objects.txt
以下のように、テーブルと列を含むファイルがあります。
Part:1
Table_name: customer1
Column_name: account_no
Part:2
Table_name: customer2
Column_name: purchase_id
.
.
Part:n
ループ内の2つの変数でファイルからtable_nameとcolumn_nameを選択し、それを送信して次のsqlplus
クエリを実行しようとしています。
For tab in grep of table_name
For col in grep of column_name
Set table=$tab
Set column=$col
Set Null_check='sqlplus -s/@$oracle' ‹‹ENDOFSQL
set serveroutput on;
Select count(*) from (select $column from $table where $column is null);
Exit
ENDOFSQL
単一の for ループ反復でこれらの 2 つの変数を繰り返し、この SQL クエリに送信する方法を教えてください。
答え1
このような:
function insert {
printf "Table: %s Column: %s\n" $1 $2
}
while read prefix rest
do
case $prefix in
'Table_name:')
table=$rest
;;
'Column_name:')
column=$rest
insert $table $column
;;
*)
;;
esac
done < datafile
insert
これをSQL要求を実行するために2つのパラメータを使用する関数に置き換えます。