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
不知道“?”处参数形势如何写了。紧急求助!