再次请教存储过程的问题,已经焦头烂额了,大家帮忙看看吧。

wwwhaichun 2004-03-12 02:32:04
Create or replace package packclient
AS
TYPE tssn is TABLE of NUMBER(10)
INDEX BY BINARY_INTEGER;
TYPE tfname is TABLE of VARCHAR2(50)
INDEX BY BINARY_INTEGER;

PROCEDURE allclient(
ssn OUT tssn,
fname OUT tfname
);
PROCEDURE oneclient(
onessn IN NUMBER,
ssn OUT tssn,
fname OUT tfname
);
END packclient;

包体:
Create or replace package body packclient
AS
PROCEDURE allclient(
ssn OUT tssn,
fname OUT tfname
) IS
CURSOR client_cur IS
SELECT clientid, clientname
FROM client;
percount NUMBER DEFAULT 1;
BEGIN
FOR singleclient IN client_cur
LOOP
ssn(percount) := singleclient.clientid;
fname(percount) := singleclient.clientname;
percount := percount + 1;
END LOOP;
END;

PROCEDURE oneclient(
onessn IN NUMBER,
ssn OUT tssn,
fname OUT tfname
) IS
CURSOR client_cur IS
SELECT clientid,clientname
FROM client
WHERE clientid = onessn;
percount NUMBER DEFAULT 1;
BEGIN
FOR singleclient IN client_cur
LOOP
ssn(percount) := singleclient.clientid;
fname(percount) := singleclient.clientname;
percount := percount + 1;
END LOOP;
END;
END;

本地调用:
DECLARE
TYPE tssn is TABLE of NUMBER(10) INDEX BY BINARY_INTEGER;
TYPE tfname is TABLE of VARCHAR2(50) INDEX BY BINARY_INTEGER;
mID tssn;
mName tfname;
tmpID number;
BEGIN
tmpID :=1;
packclient.oneclient(tmpID,mID,mName);
END;
/
错误提示为:
PLS-00306: 调用 'ONECLIENT' 时参数数量或类型错误
到底错在哪儿了?怎么修改。
估计还是存储过程写的有问题,但是找不到地方。请各位帮忙看看。谢谢!
...全文
22 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧