MySQL
Подготовить заявления
Поиск…
Синтаксис
- PREPARE stmt_name FROM prepareable_stmt
- EXECUTE stmt_name [ИСПОЛЬЗОВАНИЕ @var_name [, @var_name] ...]
- {DEALLOCATE | DROP} PREPARE stmt_name
ПОДГОТОВИТЬ, ВЫПОЛНИТЬ И ДОСТИГАТЬ ПОДГОТОВИТЬ ЗАЯВЛЕНИЯ
PREPARE готовит заявление для выполнения
EXECUTE выполняет подготовленное заявление
DEALLOCATE PREPARE публикует подготовленное заявление
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;
Результат:
+------------+
| hypotenuse |
+------------+
| 10 |
+------------+
В заключение,
DEALLOCATE PREPARE stmt2;
Заметки:
- Вы должны использовать переменные @variables, а не DECLAREd для
FROM @s
- Первичное использование Prepare и т. Д. Заключается в том, чтобы «построить» запрос для ситуаций, когда привязка не будет работать, например, вставка имени таблицы.
Построить и выполнить
(Это запрос для хорошего примера, который показывает, как построить SELECT
с помощью CONCAT
, затем подготовить + выполнить его. Пожалуйста, обратите внимание на использование переменных @variables и DECLAREd - это имеет большое значение, и это то, что новички ( включая себя) спотыкаются.)
Изменить таблицу с добавлением столбца
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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow