Sintaxe

PREPARE stmt_name FROM preparable_stmt

Descrição

A instrução PREPARE, prepara uma instrução e atribui à ela um nome, stmt_name, pelo qual irá se referir posteriormente. Os nomes de instrução não diferenciam maiúsculas de minúsculas. preparable_stmt é um string literal, ou uma variável de usuário que contem o texto da instrução. O texto deve representar uma única instrução SQL, e não instruções múltiplas. Dentro da instrução, caracteres "?" podem ser usados como marcadores de parâmetros para indicar onde serão vinculados os valores dos dados à consulta mais tarde quando você executá-la. Os caracteres "?" não devem ser colocados entre aspas, mesmo que você deseje vinculá-los à valores de string. Marcadores de parâmetros podem ser usados só onde valores de dados devem aparecer, e não para palavras-chave SQL, identificadores, e assim por diante.

Se uma instrução preparada com o nome dado já existe, ela é desalocada implicitamente antes que esteja preparada a nova instrução. Isto significa que se a nova instrução contém um erro e não pode ser preparada, um erro será retornado e não existirá nenhuma instrução com o nome dado.

Uma instrução preparada é executada com EXECUTE e liberada com DEALLOCATE PREPARE.

O âmbito de uma instrução preparada é a sessão em que é criada. Outras sessões não podem vê-la

Exemplo

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;

Comments

Comments loading...