L'istruzione PREPARE
Contents
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;