OracleのPL / SQLの研究ノート

SQL文は、直ちに手続きの実行を保存します

execute immediate sql;

SQLPLUSでストアドプロシージャを実行します

 execute 存储过程名

Oracleは、同義語、プライベート・シノニムにデフォルトを作成します

  create synonym ctb for item.chinastudentbook@dblink6;

パブリック・シノニム

create public synonym ctb for .... 

シノニムを削除

drop synonym ctb;
drop public synonym pb_ctb;

定数、一定のキーワードを定義します。

  c_id constant number := 50;

バインド変数を使用:変数名のファッション

SQL> begin
	:bd:='hello you';
	end;
SQL> print bd;

定義のサブタイプ

declare
	subtype sub_num is number(5,1);
	v2 sub_num;
begin
 	null;
end;

逆逆循環をサポートしています

for counter in [reverse] 开始值..结束值  loop

end loop;

無条件終了

loop

exit

end loop;

条件付き終了

loop

exit when y > 3;

end loop;

無条件で継続します

loop

continue;

end loop;

継続条件

loop

continue when y>3;

end loop;

goto文、あなたはラベル、カスタムラベル名のタグ構文を定義する必要があります<< >>

declare
	...
begin
	<<hbk>>
	...
	if v1>20 then
	goto hbk;
	end if;
	...
end;

プログラムは、goto文を実行すると、文は後藤後に実行されていませんが、ラベルHBKへのジャンプがHBKからのコード実行を開始します。

でPL / SQLについての異常
ここに画像を挿入説明

declare
	...
begin
	...
exception
	when 异常1  then
	对异常1进行处理;
	when 异常2 then
	对异常2进行处理;
	...
	when others then
	...
end;

例外をキャッチ

when  others then
dbms_output.put_line('Error code:'||SQLCODE||'   '||SQLERRM);

SQLCODEおよびOracle SQLERRMは、予め定義された機能、前者戻るエラーメッセージを返し、エラーコードです。

カスタム例外、構文は次のとおりです。
「例外名」の例外

pragma exception_init(exception_name,-Oracle_error_number);

範囲-20 000 999個の数値を-20〜

トリガー3
1、例外は、Oracleによって自動的にトリガされる
raise文を使用して、2手動でトリガ
ストアドプロシージャを呼び出し、3手動でトリガRAISE_APPLICATION_ERROR

declare
	myecp exception;
begin
	raise myecp;
	exception when myecp then
	dbms_output.put_line('myecp error..');
end;


declare
	myecp2 exception;
	pragma exception_init(myecp2,-20009);
begin
	raise_application_error(-20009,'data is out of list');
	exception when myecp2 then
	dbms_output.put_line('Error code:'||SQLCODE||'  '||SQLERRM);
end;

おすすめ

転載: blog.csdn.net/huangbaokang/article/details/94625214