ブロック引用のサポート
ストアード・プロシージャーは、多数のテキスト行で構成されるブロックまたは本文として定義されます。 プロシージャー本体の定義を容易にし、デバッグや学習のために内容を読みやすくするために、ブロッククオートのメカニズムが提供されている。
CREATE OR REPLACE PROCEDURE name() RETURNS INT4 LANGUAGE NZPLSQL AS
BEGIN_PROC
DECLARE
string varchar;
BEGIN
string := 'This string is quoted';
END;
END_PROC;
例に示したように、引用符はブロック引用ストリング内でエスケープされません。 ストリング・コンテンツは、常に文字通りに記述されます。 バックスラッシュは、特別な「エスケープ」の意味を持ちません。
ストアード・プロシージャーの本文は、デフォルトでは平文フォーマットになります。 特権ユーザは、SHOW PROCEDURE VERBOSE コマンドを使用して、ストアド プロシージャを確認することができます。 必要に応じて、プロシージャー作成の際に、プロシージャー・コードを「非表示」にすることができます。
ブロック引用は、NZPLSQL 本文の引用またはストアード・プロシージャー呼び出しにおける使用のみを意図しています。 実行コマンドの CALL および EXEC[UTE[ PROCEDURE]] はこれらをサポートしますが、SELECT はこれらをサポートしません。 ブロック引用を、ストアード・プロシージャー本文の内側で使用して、許容される場所で DDL 文を作成できますが、本文の内側では引用の意味は持ちません。 ブロック引用を本文の内側で使用する場合は、エラーを避けるために、必ず両方のキーワードの数が等しく、対をなす (BEGIN_PROC が対応する END_PROC の前に表示される) ようにしてください。 プログラム・ロジックがキーワードの不一致を指摘する場合、キーワードが分断されているはずです (すなわち、'BEGIN_' || 'PROC')。
select "BEGIN_PROC" from <table>;
insert into <table> values ('BEGIN_PROC');
CREATE OR REPLACE PROCEDURE name() RETURNS INT4 LANGUAGE NZPLSQL AS
BEGIN_PROC
DECLARE
string varchar;
BEGIN
string := 'This string is quoted';
-- This comment is the match for below BEGIN_PROC
insert into va values ('END_PROC');
END;
END_PROC;
CREATE OR REPLACE PROCEDURE name() RETURNS INT4 LANGUAGE NZPLSQL AS
BEGIN_PROC
DECLARE
string varchar;
BEGIN
-- The next statement is a syntax error since it is not quoted
string := BEGIN_PROC This string is not quoted END_PROC;
END;
END_PROC;