调用oracle 10g中包内的程序

时间:2015-10-02 13:30:25

标签: oracle10g procedure overloading

如何在oracle 10g中调用包内的程序。            我有一个叫做" area"这是一个参数,另一个也是" area"但有3个参数。简而言之,程序在包装内部过载" shapearea"。

create or replace package shapearea is
procedure area(l in number);
procedure area(l in number,b in number,h in number);
end;


create or replace package body shapearea is

 procedure area (l in number) is
 begin
    dbms_output.put_line('Area of '||'l'||' lengh circle is'||l*l);
 end;

procedure area (l in number,b in number,h in number) is
 begin
    dbms_output.put_line('Area of '||'l'||' lengh ractangle is'||l*b*h);
 end;

end;

我试过

execute shapearea.area(5);
exec shapearea.area(5);
call shapearea.area(5);
shapearea.area(5);

但它在oracle 10g中无效。

1 个答案:

答案 0 :(得分:0)

如果您使用的是SQL * Plus,请尝试:

set serveroutput on
Begin
  shapearea.area(5);
end;
/

如果您使用的是SQL Developer,则需要显示DBMS_Output窗口并为您正在使用的连接启用它。

DBMS_OUTPUT实际上并没有自己写入您的显示器。实际上它只是将输出缓冲到某些内部数据结构,然后在SQL * Plus的情况下,SET SERVEROUTPUT ON使客户端例程能够检索输出。如果SQL Developer显示DBMS输出窗口并为您正在使用的连接启用它,则启用它的客户端显示例程。

对于其他环境,您可能需要使用GET_LINE和/或GET_LINES DBMS_OUTPUT functions以编程方式读取缓冲结果。