我可以在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 :(得分:0)
存储过程没有返回值。你根本做不到这个:
SET someVar = CALL someProcedure();
如果您需要检索过程中计算的某些值,则需要:
SELECT something INTO @var
)中写入数据(这很难看,但它有效)INOUT
参数据了解,大多数驱动程序(JDBC,PDO)将处理存储过程中执行的最后SELECT
语句的结果,作为CALL some_procedure()
之类的查询的结果。此功能为specific to the MySQL client/server protocol,MySQL SQL语法没有等效功能。