パス名が文字列で渡されるスクリプトを SQLPlus で実行するにはどうすればよいですか。次のようなもの(失敗):
SET SERVEROUTPUT ON;
DECLARE
path VARCHAR2(128);
BEGIN
path := '<runtime_path>' || 'test_script.sql';
dbms_output.put_line(path);
@ path;
END;
/
パス名が文字列で渡されるスクリプトを SQLPlus で実行するにはどうすればよいですか。次のようなもの(失敗):
SET SERVEROUTPUT ON;
DECLARE
path VARCHAR2(128);
BEGIN
path := '<runtime_path>' || 'test_script.sql';
dbms_output.put_line(path);
@ path;
END;
/
パラメータを SQLPlus に渡すことはできますが、PL/SQL と SQLPlus コマンドを混在させることはできません。だからあなたの例は飛ばないでしょう。そのため、シェル スクリプトでラップする必要がある場合があります。しかし、PL/SQL ルーチンを見ると、パスを追加しようとしているだけです。たぶんこれは可能です。
このようにsqlplusを呼び出します
sqlplus user/password@database @genericscript.sql path
そして、genericscript.sql内
SET SERVEROUTPUT ON
start &1.myscript.sql
quit
私の例では、myscript.sql にはこのコンテンツがあります
select 'hello welt' from dual;
だから私はSQLPlusから次の出力を得ました
[oracle@localhost sqp]$ sqlplus user/pw@db @genericscript.sql /home/oracle/sqp/
SQL*Plus: Release 11.2.0.2.0 Production on Tue May 14 22:53:15 2013
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
'HELLOWELT
----------
hello welt
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
それが役に立てば幸い。SQLPLUSリファレンスマニュアルをご覧ください。
http://docs.oracle.com/cd/E11882_01/server.112/e16604/ch_five.htm#autoId13
PDFの方がいい
私が Windows で行う方法は、以下を含む BAT ファイルを作成することです。
sqlplus my_username/my_password@tns.test.company.com %*
コマンド プロンプトから、ファイルの SQL コンテンツを実行するには、次のように入力します。
batfile.bat @myfile.sql