Stored procedures 如何在PostgreSQL 13中使用INOUT参数调用存储过程(非函数)
我有一个存储过程:Stored procedures 如何在PostgreSQL 13中使用INOUT参数调用存储过程(非函数),stored-procedures,postgresql-13,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
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
怎么了?我找到了一些示例,但这些示例只存在于函数中。这是解决方案:
DO
$$
DECLARE secuencial INT;
BEGIN
CALL SP_ObtenerSecuencialFactura(secuencial);
RAISE NOTICE '%', secuencial;
END
$$
注:1
做
查询在85毫秒内成功返回
PostgreSQL使用PL/pgSQL,就像Oracle使用PL/SQL一样,因此,要使用OUTIN参数调用存储过程,我们需要使用“do”和“$$”来解析匿名块中的调用和变量