Ejr*_*085 5 stored-procedures postgresql-13
我有这个存储过程:
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
$$
Run Code Online (Sandbox Code Playgroud)
和电话:
DECLARE secuencial INT;
CALL SP_ObtenerSecuencialFactura(secuencial);
RAISE NOTICE '%', secuencial;
Run Code Online (Sandbox Code Playgroud)
但是当我调用该存储过程时出现此错误:
错误:“INT”处或附近的语法错误
第 1 行:DECLARE secuencial INT;
怎么了?我正在寻找示例,但仅存在于函数中。
这是解决方案:
DO
$$
DECLARE secuencial INT;
BEGIN
CALL SP_ObtenerSecuencialFactura(secuencial);
RAISE NOTICE '%', secuencial;
END
$$
Run Code Online (Sandbox Code Playgroud)
注意:1
做
查询在 85 毫秒内成功返回。
PostgreSQL使用PL/pgSQL就像Oracle使用PL/SQL一样,因此,要调用带有OUTIN参数的存储过程,我们需要用“do”和“$$”将调用和匿名块中的变量包含起来