2013-07-01 3 views
0

Могу ли я вызвать хранимую процедуру внутри функции mysql. Я пробовал, но он выдает синтаксическую ошибку. Является ли это возможным?Вызов хранимой процедуры с помощью функции mysql

DELIMITER $$ 

DROP FUNCTION IF EXISTS `fn_abcd`$$ 

CREATE FUNCTION `fn_abcd`(orderItem BIGINT(45),quantity INT) RETURNS double 
BEGIN 

    DECLARE TotalNetValue DOUBLE; 
    set TotalNetValue = call sp_abcd(orderItem,quantity); 
    RETURN TotalNetValue; 
    END$$ 

DELIMITER ; 
+0

Я думаю, вам нужно использовать параметры INOUT для получения вашего вывода. Вы можете проверить документацию? – mohkhan

+0

показать создать sp_abcd – chetan

ответ

0

Хранимая процедура не имеет возвращаемого значения. Вы просто не можете этого сделать:

SET someVar = CALL someProcedure();

Если вам нужно извлечь какую-то ценность, вычисленную в процедуре, вам необходимо либо:

  • есть хранимая процедура записи данных в переменной сеанса (SELECT something INTO @var) (это некрасиво, но это работает)
  • использовать INOUT параметр
  • переписать процедуру как функцию

Понятно, что большинство драйверов (JDBC, PDO) будет лечить результат последнего SELECT оператора, выполненного в хранимой процедуре, в результате запроса, такого как CALL some_procedure(). Эта функция specific to the MySQL client/server protocol, синтаксис SQL SQL не имеет эквивалента.

Смежные вопросы