Syntaxe
PREPARE statement-name FROM host-variable,...
|
Paramètres
Nom |
Description |
statement-name |
Ce paramètre permet d'indiquer le nom de l'instruction. |
host-variable |
Ce paramètre permet d'indiquer le nom des variables de l'hôte. |
Description
Cette instruction permet de préparé une requête dynamique SQL ou une STORED procédure.
Ainsi, l'instruction PREPARE est unique au SQL dynamique. Il accepte une variable hôte contenant une chaîne d'instruction SQL et transmet l'instruction au SGBD.
Le SGBD compile le texte de l'instruction et le prépare pour son exécution en générant un plan d'application. Le SGBD définit les variables SQLCODE/SQLSTATE pour
indiquer les erreurs détectées dans le texte de l'instruction. Comme décrit précédemment, la chaîne de caractères d'instruction peut contenir un marqueur de paramètre, indiqué par un point
d'interrogation, partout où une constante peut apparaître. Le marqueur de paramètre signale au SGBD qu'une valeur pour le paramètre sera fournie ultérieurement, lorsque l'instruction sera
réellement exécutée.
À la suite de l'instruction PREPARE, le SGBD attribue le nom d'instruction spécifié à l'instruction préparée. Le nom de l'instruction est un identifiant SQL, comme
un nom de curseur (CURSOR). Vous spécifiez le nom de l'instruction dans les instructions EXECUTE suivantes lorsque vous souhaitez exécuter l'instruction.
Remarques
- De nombreuses marques de SQL préfèrent utiliser l'instruction CREATE PROCEDURE pour définir des requêtes dynamique et l'utilisation de l'instruction PREPARE se
révèle peu efficace ou carrément inexistante.
- Les marques de SGBD diffèrent par la durée pendant laquelle elles conservent l'instruction préparée et le nom de l'instruction associée. Pour certaines marques, l'instruction préparée ne
peut être réexécutée que jusqu'à la fin de la transaction en cours (c'est-à-dire jusqu'à la prochaine instruction COMMIT ou
ROLLBACK). Si vous souhaitez exécuter la même instruction dynamique ultérieurement au cours d'une autre transaction, vous devez la préparer à nouveau.
D'autres marques assouplissent cette restriction et conservent l'instruction préparée tout au long de la session en cours avec le SGBD. La norme ANSI et ISO SQL2
reconnaît ces différences et indique explicitement que la validité d'une instruction préparée en dehors de la transaction en cours dépend de la mise en oeuvre.
- L'instruction PREPARE peut être utilisée pour préparer presque toutes les instructions DML ou DDL exécutables, y compris l'instruction SELECT.
Les instructions SQL incorporées qui sont en fait des directives de précompilateur (telles que les instructions WHENEVER ou DECLARE CURSOR) ne peuvent évidemment pas être
préparées, car elles ne sont pas exécutables.
Dernière mise à jour : Samedi, le 9 mars 2019