プロが教える店舗&オフィスのセキュリティ対策術

ご無沙汰しております。
業務でUNIX系OSを使用することになったので、教えていただきたいです。

Cシェルにて、packageを呼出し、マスタ更新のシェルを作成しようとしております。

以下作成したCシェル

#!/bin/csh

sqlplus ユーザID/パスワード@ORACLE_SID
declare
変数定義
begin
package名.プロシージャ名(引数1, 2, 3);
end;
/

exit
-- ここまで--

上記のシェルを/export/home/oracle/にtest.shと言う名前で作成しており、
/export/home/oracle/test.shにて、実行した結果sqlplusは起動出来ましたが、
プロシージャまで実行してくれないです。
エラーも何も出ているわけではなく、接続に成功後、SQL>と出たままとまってしまいます。
その際、exitと打つと、packageを呼び出そうとしているみたいです・・・。(もちろんここではエラーになります。)

Cシェルでこのようなことを実装できる方法をご存知の方、ご教授お願い致します。

ISMSの関係上、業務時間にネットを見ることに制限をかけられ、困ってる次第です。



環境は
solaris10
oracle10g
です。

A 回答 (2件)

#!/bin/csh



sqlplus ユーザID/パスワード@ORACLE_SID <<EOF1
declare
変数定義
begin
package名.プロシージャ名(引数1, 2, 3);
end;
/

exit
EOF1

としてみてください
    • good
    • 0
この回答へのお礼

遅くなり、申し訳ないです。

お蔭様で解決できました!

EOF1当たりが何をやっているのかわかりませんが、これから覚えていこうと思います。

お礼日時:2010/12/03 19:44

シェルスクリプトは、「キーボードマクロ」ではありません。


現在のものは
・sqlplusを実行。終了を待つ
・declareをcshまたはunixのコマンドとして実行を試みる

という動作になります。

これは「cshで実装できる方法」ではなく、「sqlplusでログオン→コマンド実行を自動で行う方法」を調べ、それを「シェルスクリプトで記述する」ということになります。

既出の「ヒアドキュメントを使って標準入力から入力」の他、「別ファイルにsqlのスクリプトを保存しておいて、sqlplusで@のあとにファイルを指定して実行」というのもあります。
http://download.oracle.com/docs/cd/B12037_01/ser …


あと、老婆心ながら。
この程度のスクリプトならどちらでもいいかと思いますが、cshスクリプトはあまりお勧めできません。
sh系を使うようにすることをお勧めします。
    • good
    • 0
この回答へのお礼

遅くなり申し訳ないです。

色々な実装方法があるのですね。
老後心で助言助かりますが、客先がCシェル指定なもので・・・。

でも、何となくCシェルをお勧めしない理由がわかりました。

お礼日時:2010/12/03 19:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!