菜鸟问一个关于包的问题
我刚用oracle,请大家帮忙看一下
CREATE OR REPLACE PACKAGE "CLINIC"."GET_MODAL_2_PKG" as
TYPE myrctype IS REF CURSOR;
PROCEDURE GET_MODAL_2 (p_rc OUT myrctype);
end GET_MODAL_2_PKG;
as
CREATE OR REPLACE package body "CLINIC"."GET_MODAL_2_PKG" as
PROCEDURE get_modal_2 (p_rc OUT myrctype)
is
BEGIN
OPEN p_rc FOR
--select ModelID,depname,ModelName,opername,'' from InHosCureNameModel a,dep_table b,opertable c
--where a.depid=b.depid and a.operid=c.operid ;
select * from clinic.operaccount;
END get_modal_2;
end GET_MODAL_2_PKG
编译已经没有问题(若有就是我写错了)
但是不知怎么调用
这是我的调用方法
begin
declare p_rc1 get_modal_2_pkg.myrctype;
exec get_modal_2_pkg.get_modal_2(p_rc1);
end;
提示错误为
ERROR 位于第 4 行:
ORA-06550: 第 4 行, 第 1 列:
PLS-00103: 出现符号 "END"在需要下列之一时:
begin function package
pragma procedure subtype type use <an identifier>
<a double-quoted delimited-identifier> form current cursor
问题点数:40、回复次数:3Top
1 楼beckhambobo(beckham)回复于 2003-06-02 15:12:03 得分 40
declare
v_ModelID ...;
v_depname ...;
v_ModelName ...;
v_opername ...;
p_rc1 get_modal_2_pkg.myrctype;
begin
get_modal_2_pkg.get_modal_2(p_rc1);
loop
fetch prc1 into v_ModelID,v_depname,v_ModelName,v_opername;
exit when p_rc1%notfound;
dbms_output.put_line(v_ModelID||v_depname||v_ModelName||v_opername);
end loop;
end;
/
Top
2 楼zhangjs780206()回复于 2003-06-02 15:30:49 得分 0
declare
opername varchar2(10);
operid number(6,1);
p_rc1 get_modal_2_pkg.myrctype;
begin
get_modal_2_pkg.get_modal_2(p_rc1);
loop
fetch prc1 into opername,operid;
exit when p_rc1%notfound;
dbms_output.put_line(opername||operid);
end loop;
end;
按照你写的那样做了,但是还是不行
另外我们以前用sql server 2000 现在想用oracle 我们的存储过程几乎都是返回记录集然后再客户端html网页中处理,我们用sql server 2000 时是很方便的,但到oracle后会不会太复杂了
错误:
ORA-06550: 第 4 行, 第 8 列:
PLS-00201: 必须说明标识符 'GET_MODAL_2_PKG.MYRCTYPE'
ORA-06550: 第 4 行, 第 8 列:
PL/SQL: Item ignored
ORA-06550: 第 6 行, 第 29 列:
PLS-00320: 此表达式的类型说明不完整或格式不正确
ORA-06550: 第 6 行, 第 1 列:
PL/SQL: Statement ignored
ORA-06550: 第 8 行, 第 7 列:
PLS-00201: 必须说明标识符 'PRC1'
ORA-06550: 第 8 行, 第 1 列:
PL/SQL: SQL Statement ignored
ORA-06550: 第 9 行, 第 11 列:
PLS-00320: 此表达式的类型说明不完整或格式不正确
ORA-06550: 第 9 行, 第 1 列:
PL/SQL: Statement ignoreTop
3 楼beckhambobo(beckham)回复于 2003-06-02 16:24:34 得分 0
CREATE OR REPLACE PACKAGE GET_MODAL_2_PKG as
TYPE myrctype IS REF CURSOR;
end GET_MODAL_2_PKG;
/
CREATE OR REPLACE PROCEDURE get_modal_2(p_rc OUT GET_MODAL_2_PKG.myrctype)
is
BEGIN
OPEN p_rc FOR
--select ModelID,depname,ModelName,opername,'' from InHosCureNameModel a,dep_table b,opertable c
--where a.depid=b.depid and a.operid=c.operid ;
'select * from clinic.operaccount';
END get_modal_2;
/
declare
opername varchar2(10);
operid number(6,1);
p_rc1 get_modal_2_pkg.myrctype;
begin
get_modal_2(p_rc1);
loop
fetch p_rc1 into opername,operid;
exit when p_rc1%notfound;
dbms_output.put_line(opername||operid);
end loop;
end;
/Top




