如何执行没有varchar的程序

时间:2018-11-30 04:31:10

标签: oracle stored-procedures plsql package

我有一个包裹:

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') 但这是行不通的。请告诉我如何执行此操作

1 个答案:

答案 0 :(得分:2)

您可以在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

的数据类型