langage procédural SQL (Procedural Language (SQL PL))
SQL peut être utilisé comme langage de programmation structuré pour écrire le corps de la routine pour les fonctions SQL, les procédures SQL, les déclencheurs SQL et les instructions (dynamiques) composées. C'est ce qu'on appelle le langage de procédure SQL, également appelé SQL PL.
Les procédures SQL et les fonctions SQL sont collectivement appelées routines SQL. Les procédures SQL sont créées en spécifiant un corps de routine SQL dans l'instruction CREATE PROCEDURE. Les fonctions SQL sont créées en spécifiant un corps de routine SQL dans l'instruction CREATE FUNCTION. Les déclencheurs SQL sont créés en spécifiant un corps de routine SQL dans l'instruction CREATE TRIGGER. Une instruction composée (dynamique) est définie en spécifiant un corps de routine SQL dans l'instruction composée (dynamique).
Une procédure SQL peut également être modifiée. L'option OR REPLACE de l'instruction CREATE PROCEDURE ou CREATE FUNCTION peut être utilisée pour remplacer une routine SQL par une nouvelle version. Vous pouvez également spécifier un nouveau corps de routine SQL dans l'instruction ALTER PROCEDURE ou ALTER FUNCTION.
Un corps de routine SQL doit être une instruction SQL unique qui peut être une instruction de contrôle SQL.
Le corps de la routine SQL est la partie exécutable de la procédure, de la fonction ou du déclencheur qui est transformée par le gestionnaire de base de données en programme ou programme de service. Lorsqu'une routine SQL, un déclencheur ou une variable globale est créé, SQL crée des fichiers source temporaires (QTEMP/QSQLSRC et QTEMP/QSQLT00000) qui contiendront du code source C avec des instructions SQL imbriquées. Lorsque SQL crée ces fichiers source temporaires, une longueur d'enregistrement de 160 est utilisée et la valeur CCSID de l'instruction source est définie comme valeur CCSID pour le nouveau fichier. Si l'un de ces fichiers source existe, ils seront modifiés si nécessaire pour avoir le même CCSID que la source. La longueur d'enregistrement de ces fichiers source doit être 160 ou des résultats inattendus peuvent se produire. Le nom du membre de fichier source est identique au nom de système de la routine, du déclencheur ou de la variable globale. Si DBGVIEW (*SOURCE) est indiqué, SQL crée la source racine pour la routine ou le déclencheur dans le fichier source QSQDSRC dans la même bibliothèque que la procédure, la fonction ou le déclencheur.
Une procédure SQL est créée en tant qu'objet programme (*PGM) ou programme de service (*SRVPGM) à l'aide de la commande CRTPGM ou CRTSRVPGM. Une fonction SQL est créée en tant qu'objet programme de service. Un déclencheur SQL est créé en tant qu'objet programme. Le programme ou le programme de service est créé dans la bibliothèque qui est le qualificatif implicite ou explicite du nom de la procédure, de la fonction ou du déclencheur.
Lorsque le programme ou le programme de service est créé, les instructions SQL, y compris la plupart des instructions de contrôle, deviennent des instructions SQL imbriquées dans le programme ou le programme de service. Les instructions de contrôle CALL, SIGNAL, RESIGNAL et GET DIAGNOSTIC deviennent également des instructions SQL imbriquées dans le programme ou le programme de service.
La procédure ou la fonction indiquée est enregistrée dans les tables de catalogue SYSROUTINES et SYSPARMS et un lien interne est créé entre SYSROUTINES et le programme. Lorsque la procédure est appelée à l'aide de l'instruction SQL CALL ou lorsque la fonction est appelée dans une instruction SQL, le programme associé à la routine est appelé. Le déclencheur SQL spécifié est enregistré dans la table de catalogue SYSTRIGGERS.