Подготовленное заявление, возвращающее ноль результатов - PullRequest
0 голосов
/ 01 июня 2011

Я пытаюсь выполнить следующий подготовленный оператор:

PREPARE stmt FROM 'SELECT * FROM Inventory I WHERE I.ParentId = ?';
EXECUTE stmt USING @parentId;

DEALLOCATE PREPARE stmt;

Когда я выполняю этот оператор, он возвращает заголовки столбцов без строк.Он должен вернуть 6 строк.

Если я выполню этот же оператор как обычный оператор SQL без оператора PREPARE и EXECUTE, я получу результаты, например,

SELECT * FROM Inventory I WHERE I.ParentId = parentId;

Результаты будут возвращены.Что я делаю неправильно?Есть ли какое-либо приведение, которое делает мой оператор недействительным?

Обновление, parentId передается в качестве параметра, например,

CREATE DEFINER=`george`@`%` PROCEDURE `ListInventoryByParentId`(IN parentId INT)

1 Ответ

1 голос
/ 01 июня 2011

Пользовательская переменная @parentId и аргумент процедуры parentID являются независимыми.Вам нужно установить переменную пользователя в качестве аргумента процедуры перед выполнением оператора.

SET @parentID = parentId;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...