Buscar..


Sintaxis

  • PREPARAR stmt_name FROM preparable_stmt
  • EJECUTAR stmt_name [USING @var_name [, @var_name] ...]
  • {DEALLOCATE | DROP} PREPARAR stmt_name

PREPARAR, EJECUTAR y DESALARCAR las declaraciones de PREPARACIÓN

PREPARAR prepara una declaración para su ejecución.

EJECUTAR ejecuta una sentencia preparada.

DEALLOCATE PREPARE lanza una declaración preparada

SET @s = 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
PREPARE stmt2 FROM @s;
SET @a = 6;
SET @b = 8;
EXECUTE stmt2 USING @a, @b;

Resultado:

+------------+
| hypotenuse |
+------------+
|         10 |
+------------+

Finalmente,

DEALLOCATE PREPARE stmt2;

Notas:

  • Debe usar @variables, no variables DECLARADAS para FROM @s
  • Un uso principal para Preparar, etc., es "construir" una consulta para situaciones donde el enlace no funcionará, como insertar el nombre de la tabla.

Construir y ejecutar

(Esta es una solicitud de un buen ejemplo que muestra cómo construir un SELECT usando CONCAT , luego prepararlo y ejecutarlo. Por favor, enfatice el uso de las variables @variables contra las variables DECLAREd: hace una gran diferencia, y es algo que los novatos ( incluyéndome) tropezando.)

Alterar tabla con añadir columna

SET v_column_definition := CONCAT(
  v_column_name
  ,' ',v_column_type
  ,' ',v_column_options 
);

SET @stmt := CONCAT('ALTER TABLE ADD COLUMN ', v_column_definition);

PREPARE stmt FROM @stmt;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow