如何在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中无效。
答案 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以编程方式读取缓冲结果。