问题描述
我有这个存储过程:
CREATE OR REPLACE PROCEDURE SP_ObtenerSecuencialFactura(INOUT p_secuencial INT)
LANGUAGE PLPGsql
AS
$$
BEGIN
SELECT MAX("CODIGOFACTURA") + 1 INTO p_secuencial FROM "FACTURA";
IF p_secuencial IS NULL THEN
p_secuencial := 1;
END IF;
END
$$
调用:
DECLARE secuencial INT;
CALL SP_ObtenerSecuencialFactura(secuencial);
RAISE NOTICE '%',secuencial;
第1行:声明安全的INT;
怎么了?我在查找示例,但仅存在函数。
解决方法
这是解决方案:
DO
$$
DECLARE secuencial INT;
BEGIN
CALL SP_ObtenerSecuencialFactura(secuencial);
RAISE NOTICE '%',secuencial;
END
$$
注意:1
DO
查询在85毫秒内成功返回。
PostgreSQL使用PL / pgSQL就像Oracle与PL / SQL一样,因此,要调用带有OUTIN参数的存储过程,我们需要在匿名块中将调用和变量包含“ do”和“ $$”