调用oracle的过程,有个对应游标的参数不知如何书写,紧急求助!

jyulan 2003-12-02 09:26:37
oracle的包和包体分别如下,确定是没有问题的。
create or replace package pkg_test
AS
TYPE myrctype IS REF CURSOR;

PROCEDURE gp_findusertable (v_userid in varchar2,i_out out int , p_rc OUT myrctype);
END pkg_test;
/

create or replace
..
AS
PROCEDURE gp_findusertable (v_userid in varchar2, i_out out int, p_rc OUT myrctype)
IS
sqlstr VARCHAR2 (500);
sqlstr2 VARCHAR2(100);
num int;
BEGIN
i_out := 0;
sqlstr :=
'select table_name from user_tables where table_name=:' + v_userid;
OPEN p_rc FOR sqlstr;
i_out := 0;
num := 0;
loop
exit when p_rc%NOTFOUND;
num := num+1;
end loop;

i_out := 1;
sqlstr2 := 'create table ' + v_userid + '(userid varchar2(6))';
execute immediate sqlstr2;
exception
when no_data_found then
i_out := 0;
raise_application_error(-20100, 'cannot find the id');


END gp_findusertable;
END pkg_test;
/
在vb中

Dim paraLoginID As ADODB.Parameter '输入参数:当前检查的用户ID
Dim paraState As ADODB.Parameter '输出参数:当前检查用户存在情况
Dim paraCur As ADODB.Parameter '输出参数:控制游标
ConnState
Set Cmd = Nothing '必须清空原来的参数
Cmd.ActiveConnection = Conn '连接SERVER
Set paraLoginID = Cmd.CreateParameter("LoginID", adChar, adParamInput, 50, CurLoginID)
Cmd.Parameters.Append paraLoginID

Set paraState = Cmd.CreateParameter("State", adInteger, adParamOutput)
Cmd.Parameters.Append paraState

Set paraCur = Cmd.CreateParameter("Cur", ????, adParamOutput)
Cmd.Parameters.Append paraCur

Cmd.CommandType = adCmdStoredProc
Cmd.CommandText = "pkg_test.gp_findusertable"
Cmd.Execute


不知道“?”处参数形势如何写了。紧急求助!


...全文
80 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jyulan 2003-12-03
  • 打赏
  • 举报
回复
我已经解决了这个问题,原因是我的包和包体在vb下的使用方法有问题。
另外,我将过程修改为存储过程,却又发现在SQL PLUS下正确执行得建表等工作,写在过程中,发现调用过程时提示没有权限。
jyulan 2003-12-02
  • 打赏
  • 举报
回复
我不需要返回myrctype,只需要能够运行这个过程。
SoHo_Andy 2003-12-02
  • 打赏
  • 举报
回复
myrctype 好像是个自定义类型,这样的话恐怕在VB中调用包返回
不了啊

学习中

1,217

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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