Prise en charge des citations en bloc
Les procédures stockées sont définies comme un bloc ou un corps composé de nombreuses lignes de texte. Un mécanisme de citation en bloc est fourni pour faciliter la définition du corps de la procédure et rendre le contenu plus lisible pour le débogage et l'apprentissage.
CREATE OR REPLACE PROCEDURE name() RETURNS INT4 LANGUAGE NZPLSQL AS
BEGIN_PROC
DECLARE
string varchar;
BEGIN
string := 'This string is quoted';
END;
END_PROC;
Comme le montre l'exemple, les guillemets ne sont pas échappés à l'intérieur de la chaîne entre guillemets. Le contenu de la chaîne est toujours écrit littéralement. Les barres obliques inversées n'ont pas de signification particulière.
Le corps de la procédure stockée est en texte clair par défaut. Les utilisateurs privilégiés peuvent utiliser la commande SHOW PROCEDURE VERBOSE pour examiner la procédure stockée. Si nécessaire, vous pouvez "cacher" le code de procédure lorsque vous créez la procédure.
Les guillemets sont destinés à être utilisés uniquement dans les citations du corps de NZPLSQL ou dans l'invocation de procédures stockées. Les commandes d'exécution CALL et EXEC[UTE[ PROCEDURE]] les prennent en charge, mais pas SELECT. Ils peuvent être utilisés dans le corps d'une procédure stockée pour construire des instructions DDL lorsqu'ils sont autorisés, mais ils n'ont aucune incidence sur les citations dans le corps de la procédure. S'ils sont utilisés dans le corps du texte, assurez-vous que les deux mots-clés sont en nombre égal et qu'ils correspondent (un BEGIN_PROC apparaît avant le END_PROC correspondant) afin d'éviter les erreurs. Si la logique de votre programme exige qu'ils ne correspondent pas, ils doivent être séparés (c'est-à-dire '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;