L'istruzione PREPARE

Sintassi

PREPARE nome_istruzione FROM istruzione_da_preparare

Spiegazione

L'istruzionePREPARE prepara un'istruzione e le assegna un nome, nome_istruzione, che verrà usato più tardi per eseguirla. I nomi delle istruzioni non sono case sensitive (non ci sono differenze tra le lettere minuscole e le maiuscole). istruzione_da_preparare può essere una stringa o una variabile utente che contiene il testo dell'istruzione. Esso deve consistere di una sola istruzione, non istruzioni multiple. Al suo interno, i caratteri "?" possono essere utilizzati come marcatori per i parametri, per indicare dove dovranno essere inseriti i valori quando l'istruzione verrà eseguita. I caratteri "?" non devono essere racchiusi tra virgolette, anche se rappresentano delle stringhe. I marcatori dei parametri devono essere utilizzati solo per rappresentare dei valori, e non parole chiave SQL, identificatori e così via.

Se il nome scelto per il prepared statement esiste già, viene deallocato implicitamente prima della preparazione della nuova istruzione. Questo significa che se la nuova istruzione non è corretta e non può essere preparata, verrà restituito un errore e non esisterà più un prepared statement con quel nome.

Un prepared statement può essere eseguito con EXECUTE ed eliminato con DEALLOCATE PREPARE.

Il contesto del prepared statement è la sessione all'interno della quale è stato creato. Le altre sessioni non possono vederlo.

Esempio

create table t1 (a int,b char(10));
insert into t1 values (1,"one"),(2, "two"),(3,"three");
prepare test from "select * from t1 where a=?";
set @param=2;
execute test using @param;
+------+------+
| a    | b    |
+------+------+
|    2 | two  |
+------+------+
set @param=3;
execute test using @param;
+------+-------+
| a    | b     |
+------+-------+
|    3 | three |
+------+-------+
deallocate prepare test;

Commenti

Sto caricando i commenti......
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.