This is a read-only copy of the MariaDB Knowledgebase generated on 2024-11-24. For the latest, interactive version please visit https://mariadb.com/kb/.

Instrução PREPARE

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;
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.