#php #mysql #sql #stored-procedures #procedure
#php #mysql #sql #хранимые процедуры #процедура
Вопрос:
У меня есть эта хранимая процедура, которая вызывается из PHP-скрипта. В нем есть несколько операторов select и оператор delete. Все работает нормально, кроме того, что запрос на удаление не выполняется. Он игнорируется!! Пожалуйста, помогите. Спасибо
CREATE PROCEDURE `proc_name`(IN id INT, IN type CHAR(50))
DETERMINISTIC
COMMENT 'procedure'
BEGIN
DECLARE LEGACY_EN_ID INT;
SET IN_ID = id;
SELECT IF(e.legacy_id > 0, e.legacy_id, 0) INTO LEGACY_EN_ID FROM tablename e WHERE e.id = IN_ID LIMIT 1;
/* Delete record if it exists */
DELETE
FROM tablename
WHERE entityID = LEGACY_EN_ID;
Комментарии:
1. Сгенерируйте некоторый пример скрипки SQL, создайте ошибку и отправьте ее вместе с вашим запросом.
2. Игнорируется или условие where приводит к тому, что записи не являются релевантными
3. @Randy нигде нет коммитов.
4. @TonyHopkinson если я жестко задаю идентификатор кода в запросе на удаление, это работает, но я проверил, что LEGACY_EN_ID имеет значение, так как при печати SELECT LEGACY_EN_ID в хранимой процедуре он показывает мне идентификатор…
5. Немного догадываюсь, только что заметил, что вы используете CHAR(50) вместо VarChar(50)…
Ответ №1:
- Убедитесь, что у пользователя, выполняющего хранимую процедуру, есть разрешение на это.
- Это можно проверить, направив соединение через командную строку mysql с тем же пользователем и попытавшись выполнить запрос, сгенерированный в хранимой процедуре.
- Или создайте простой PHP-скрипт и вызовите напрямую delete sql с помощью mysql_query. Если это успешно, у вас есть доступ.
Комментарии:
1. пробовал. разрешение выглядит нормально … все еще нет радости от оператора удаления