create or replace procedure test(supplierid in number,
supplier out varchar) is
begin
select first_name
into Supplier
from lup_sup_master
where sup_id = supplierid;
end;
/
execute test(2279, :supplierid);
或
begin
execute test(2279, :supplierid); dbms_output.enable; dbms_output.put_line(supplier);
end;
答案 0 :(得分:0)
似乎您对supplierid
和supplier
感到困惑。您需要为supplier
定义一个变量才能打印输出行,并且很可能已经定义了一个命令行变量supplierid
,它是数字类型。
因此,请在下面使用:
SQL> set serveroutput on;
SQL> var supplier varchar2;
SQL> execute test(2279, :supplier);
supplier
---------
Afzal -- as an example name
答案 1 :(得分:0)
您的过程test
有2个输入参数。一个具有应与该过程一起使用的IN类型,而另一个参数supplier
具有OUT
类型,这意味着该参数应该保存Procedure
返回的值。>
如@Barbaros所述,如果要通过SQL命令提示符执行过程,则可以按照以下步骤进行操作。
但是,您显示的第二种方式是使用PLSQL Block
。
开始
执行测试(2279,:supplierid);
dbms_output.enable;
dbms_output.put_line(供应商);结束;
在上面的调用示例中,必须注意,Execute
关键字仅在使用SQL
命令行提示符时才使用。在使用PLSQL块时,您可以按其名称直接调用Procedure,如下所示。还要注意,如果您有一个OUT
参数,则必须将OUT
参数传递给Procedure
,因为Procedure
需要两个参数。参见下面的演示。
declare
var varchar2(100);
begin
test( supplierid => 2279, supplier =>var);
dbms_output.enable;
dbms_output.put_line(var);
End;