SQL*PlusでSQLを記述した外部ファイルを実行する方法
SQLを記述した外部ファイルをSQL*Plusで実行する方法を解説します。
結論からいうと実行したいファイル名の前に「@」をつけるだけで実行可能です。
今回は以下のフォルダとファイル構成で検証していきます。
・フォルダ構成
C:\Temp>tree /f C:. test.sql test2.sql サブフォルダーは存在しません
・「test.sql」ファイルの中身
column id format a5 column name format a10 column address format a10 SELECT * FROM animal1;
・「test2.sql」ファイルの中身
column id format a5 column name format a10 column address format a10 SELECT * FROM &1;
外部ファイルを実行する記述方法と実行例(引数なしの場合)
引数無しの記述方法
外部ファイルは、SQL*Plusにログインした際のフォルダに配置しましょう。
パスを指定しないでファイル名のみで実行した場合、SQL*Plusでログインした際のフォルダのファイルを参照します。
@<file_name>;
引数無し・パスの指定なしの実行例
「C:\Temp」でSQL*Plusにログインします。
C:\Temp>sqlplus username/password@XE
さて、準備が整いました。実際に実行してみましょう!
大変上手に実行できましたぁ~\(^o^)/
SQL> @test.sql ID NAME ADDRESS ----- ---------- ---------- 001 いるか 海 002 うさぎ 陸 003 ぺんぎん 空 004 あざらし 海 005 ふくろう 空
引数無し・パスの指定ありの実行例
「C:\」でSQL*Plusにログインします。
C:\>sqlplus username/password@XE
さて、準備が整いました。実際に実行してみましょう!
先程と違う点は、ログインしているフォルダが「C:\」のため先ほどと同じコマンドを実行しても以下のエラーが発生します。
SQL> @test.sql SP2-0310: ファイル"test.sql"をオープンできません。
はい!パスを指定してあげるとちゃんと実行されているのがわかりますね。
大変上手に実行できましたぁ~\(^o^)/
SQL> @C:\Temp\test.sql ID NAME ADDRESS ----- ---------- ---------- 001 いるか 海 002 うさぎ 陸 003 ぺんぎん 空 004 あざらし 海 005 ふくろう 空
外部ファイルを実行する記述方法と実行例(SQL*Plusの起動と同時に外部ファイルを実行)
SQL*Plusの起動と同時に外部ファイルを実行する記述方法
splplus user_name/password@<インスタンス名> @<file_name> [<引数1> <引数2> ・・・];
SQL*Plusの起動と同時に外部ファイルの実行例
C:\Temp>sqlplus username/password@XE @test.sql ID NAME ADDRESS ----- ---------- ---------- 001 いるか 海 002 うさぎ 陸 003 ぺんぎん 空 004 あざらし 海 005 ふくろう 空
外部ファイルを実行する記述方法と実行例(引数有りの場合)
引数(パラメータ)有りの記述方法
外部ファイルに引数を渡す場合は、ファイル名の後にスペースで区切って渡します。渡した引数は「&1」「&2」・・・で受け取ることができます。
@<file_name> <引数1> <引数2> ・・・;
引数(パラメータ)有り・パス指定無しの実行例
SQL> @test2.sql animal1 旧 1: SELECT * FROM &1 新 1: SELECT * FROM animal1 ID NAME ADDRESS ----- ---------- ---------- 001 いるか 海 002 うさぎ 陸 003 ぺんぎん 空 004 あざらし 海 005 ふくろう 空
引数(パラメータ)有り・パス指定有りの実行例
SQL> @C:\Temp\test2.sql animal1 旧 1: SELECT * FROM &1 新 1: SELECT * FROM animal1 ID NAME ADDRESS ----- ---------- ---------- 001 いるか 海 002 うさぎ 陸 003 ぺんぎん 空 004 あざらし 海 005 ふくろう 空
コメント