JavaScriptが無効になっています。
この状態では一部の情報が表示されず、すべての機能を利用することができません。
SQL*Plus のコマンド・プロンプト から PL/SQL を入力する。
PL/SQL コマンドの入力したのち最終行にスラッシュ(/) を入力して改行することで入力した PL/SQL が実行される。
SQL> conn rivus/rivus_pass SQL> set serveroutput on 接続されました。 SQL> declare 2 vName VARCHAR2(10); 3 begin 4 for vRec in (select user_name from account) 5 loop 6 dbms_output.put_line(vRec.user_name); 7 end loop; 8 end; 9 / 富樫 歩夢 小杉 光輝 倉本 大翔 長谷川 春奈 荒木 奈央子 PL/SQLプロシージャが正常に完了しました。
定義済みのプロシージャを実行するには CALL または EXECUTE 文を実行する。
SQL> set serveroutput on SQL> call dbms_output.put_line('プロシージャをコールした'); プロシージャをコールした コールが完了しました。 SQL> execute dbms_output.put_line('プロシージャを実行した'); プロシージャを実行した PL/SQLプロシージャが正常に完了しました。 SQL>
ストアドプロシージャやストアドファンクションを実行するには CALL Oracle 9i または EXECUTE 文を実行する。
CALL では戻り値を受け取るために INTO 構文が用意されている。(参考:CALL と EXECUTE の機能の違い)
SQL> variable vNum number; SQL> call sys.standard.greatest(100,2,300,4) into :vNum; コールが完了しました。 SQL> print vNum VNUM ---------- 300
EXUCUTE の場合には代入を行なう PL/SQL ブロックとして実行する。
SQL> variable vNum number; SQL> execute :vNum := sys.standard.greatest(100,2,400,4); PL/SQLプロシージャが正常に完了しました。 SQL> print vNum VNUM ---------- 400
sys.standard.greatest の sys.standard. 部分は sys ユーザーが所有する standard という パッケージ名 をあらわし、標準関数の使用は greatest だけでよい(別スキーマのパッケージの呼び出例として使用)
誤ったペースト操作などによりプロンプトから begin と入力すると空行を連続しても終了しないで途方にくれていることがある。
入力状態のままになったイメージ
SQL> fkjdsafugasdf SP2-0042: 不明なコマンドです("fkjdsafugasdf")。行の残りは無視されました。 SQL> begin 2 fjskadjgyregynb 3 ・・・・・・・・・・・・・・ 4 5 6 7 8 9 10 11 12 13 14 15 . SQL> rollback;そのようなときには先頭にドット(.) だけ入力して改行する。
入力した内容はバッファに送られるが実行されないためデータを書き換えるような事は発生しない。
rollback もしておくとさらに安心。
このようになった場合には end; は入力しない。 特にウィンドウを閉じたり Ctrl+C を押下するようなことは OS によって何が起こったのかのログが見えなくなり余計面倒になるので控える。
(追記) (追記ここまで)