5

我有这个存储过程:

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;

但是当我调用该存储过程时出现此错误:

错误:“INT”处或附近的语法错误

第 1 行:声明 secuencial INT;

怎么了?我正在寻找示例,但仅存在于函数中。

4

1 回答 1

1

这是解决方案:

DO
$$
DECLARE secuencial INT;
BEGIN
    CALL SP_ObtenerSecuencialFactura(secuencial);
    RAISE NOTICE '%', secuencial;
END
$$

通知:1

查询在 85 毫秒内成功返回。

PostgreSQL 像 Oracle 和 PL/SQL 一样使用 PL/pgSQL,因此,要使用 OUTIN 参数调用存储过程,我们需要将调用和匿名块中的变量与“do”和“$$”

在 PostgreSQL 中做

于 2020-10-10T21:26:19.343 回答