ストアード・プロシージャーは、多数のテキスト行で構成されるブロックまたは本文として定義されます。 IBM® Netezza® には、プロシージャー本文の定義を容易にし、 デバッグや学習の際に内容が読みやすくなるように、ブロック引用のメカニズムが用意されています。
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 コマンドおよび NzAdmin などのインターフェースを使用してストアード・プロシージャーを参照できます。必要に応じて、プロシージャー作成の際に、プロシージャー・コードを「非表示」にすることができます。
ブロック引用は、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;