ORA-06577:output parameter not a bind variable

出现这个,表示你调用存储过程的方式出错啦

存储过程代码

CREATE OR REPLACE PROCEDURE TEST_PROCEDURE(
    a PLS_INTEGER, -- IN by default
    b IN PLS_INTEGER,
    c OUT PLS_INTEGER,
    d IN OUT BINARY_FLOAT
) AUTHID DEFINER IS
BEGIN
   -- 代码逻辑
END;

原来的错误调用方式

CALL TEST_PROCEDURE(1,2,3,4);

原因

out 类型的参数,必须是已经在存储过程外部定义过的

解决方法

先使用DECLARE定义参数,再调用存储过程。

DECLARE
    c PLS_INTEGER; d BINARY_FLOAT;
BEGIN
    TEST_PROCEDURE(1, 2, c, d);
    dbms_output.PUT_LINE(c);
    dbms_output.PUT_LINE(d);
END;

猜你喜欢

转载自blog.csdn.net/blood_Z/article/details/129166140