MySQL Сохраненная процедура не возвращает вывод при передаче ввода как переменной с использованием синтаксиса SET - PullRequest
0 голосов
/ 07 августа 2020

Спасибо, что нашли время, чтобы прочитать мой вопрос.

У меня есть простая mySQL хранимая процедура, как показано ниже, которая принимает один входной параметр и возвращает один выходной.

DELIMITER $$

CREATE PROCEDURE createOrder (in reqno varchar(20), out out_val varchar(20))

BEGIN
    select custphone
    into out_val
    from request
    where requestnum = reqno;

    insert into test values (reqno, out_val );
END;

Хранимая процедура работает, когда я выполняю ее, используя следующие шаги, т. Е. Возвращает результат, если я передаю входной параметр в виде жестко закодированной строки.

call createOrder('RQ000434', @out);
select @out;

Однако она возвращает NULL, когда я передаю первую параметр в качестве переменной, установив его значение с помощью синтаксиса SET:

SET @inv = 'RQ000455';
call createOrder(@inv, @out);
select @out;

Я новичок в mySQL и не могу понять, где я ошибаюсь. Любые предложения по разрешению приветствуются! Заранее спасибо! С уважением

1 Ответ

0 голосов
/ 07 августа 2020

Народ:

Я смог разобраться в проблеме. Попробовав разные вещи, я наконец смог заставить хранимую процедуру работать. Вот мое решение для тех, кто ищет ответ, если сталкивается с подобной проблемой:

DELIMITER $$

CREATE PROCEDURE createOrder2 (in reqno varchar(20), out out_val varchar(20))

BEGIN
    SET out_val = (select custphone
    from request
    where requestnum = reqno);

    insert into test values (reqno, out_val );
END;

Теперь, чтобы вызвать хранимую процедуру в Workbench,

SET @inv = 'RQ000434';
call createOrder2(@inv, @out);
select @out;

Спасибо за это кто нашел время, чтобы прочитать мой вопрос! С уважением!

...