【问题标题】:how to execute procedure which has out varchar如何执行包含 varchar 的过程
【发布时间】:2019-05-02 05:46:22
【问题描述】:
我有一个包裹:
CREATE OR REPLACE PACKAGE BODY pack1
AS
procedure proc1(column_1 in table1.column1%TYPE, column_2 in table1.column2%TYPE, results out varchar)
//code....
......
.....
....//
END pack1;
/
我想知道如何执行这个程序。我知道这是一个愚蠢的问题,但我对此感到非常困惑。
我试过这个:exec pack1.proc1(123,'abc')
但这行不通。请告诉我如何执行此操作
【问题讨论】:
标签:
oracle
stored-procedures
plsql
package
【解决方案1】:
您可以在 SQL* Plus 中使用绑定变量来获取结果并使用 PRINT 显示它
VARIABLE v_result VARCHAR2
EXECUTE pack1.proc1(123, 'abc', :v_result); --note the colon.
PRINT v_result --display the results.
如果您是从 PL/SQL 块或其他过程调用它,您可以使用 DBMS_OUTPUT.PUT_LINE() 显示它
SET SERVEROUTPUT ON
DECLARE
l_results VARCHAR2(20);
BEGIN
pack1.proc1(123, 'abc', l_results);
DBMS_OUTPUT.PUT_LINE(l_results);
END;
/
注意:使用VARCHAR2而不是VARCHAR作为过程参数results的数据类型