0

文字列値のリストを含むテキストファイルの内容を保持する配列を作成し、その配列をKSHスクリプトのSQL関数に送信するKSHスクリプトを作成しようとしています。これが私がこれまでにしたことです:

export text_file=$HOME/values.log
while read **line**; 

       do
       CmResTypUpd 
   done < $text_file

ResTypUpdは次のことを行います。

CmResTypUpd () {
            sqlplus -s $db_user/$db_pass@$db_inst <<EOF

            SET VERIFY OFF
            SET HEADING OFF
            SET PAGESIZE 200
            SET LINESIZE 200
            SET FEEDBACK OFF

            update My_Table set Column_Field_To_Change='NEW_VALUE' where IND1_COLUMN_VALUE='SomethingSomething' and IND2_COLUMN_VALUE='**$line**';
            commit;
   exit;

    EOF

            }

私が得たのは、スクリプトがハングして何もしないということです。

また、スクリプトはクロスプラットフォームで実行できる必要があります。つまり、任意のUnixまたはで実行できる必要がありますLinux

4

1 に答える 1

0

行をパラメータとして関数に渡す必要があります

export text_file=$HOME/values.log 
while read line; do CmResTypUpd "$line"; done < $text_file

そしてあなたの機能:

CmResTypUpd () {
    [...]
    update My_Table set Column_Field_To_Change='NEW_VALUE' 
    where IND1_COLUMN_VALUE='SomethingSomething' and IND2_COLUMN_VALUE='$1';
    [...]
}

また、変数**line**line

于 2013-03-18T15:23:10.510 に答える