VB中调用带参数存储过程的实现 请参考下面:
http://www.mypcera.com/softxue/new/vb/ba50.htm

解决方案 »

  1.   

    create table TEST
    (
      CSDM VARCHAR2(8),
      KPID VARCHAR2(8),
      KPFS NUMBER
    )
    tablespace SKST_DATA
      pctfree 10
      pctused 40
      initrans 1
      maxtrans 255
      storage
      (
        initial 128K
        next 128K
        minextents 1
        maxextents unlimited
        pctincrease 1
      );prompt
    prompt Creating package PKG_TEST
    prompt =========================
    prompt
    create or replace package PKG_TEST is
      TYPE rctype IS REF CURSOR;
      PROCEDURE TEST (p_rq IN DATE, p_rc OUT rctype);
      
    end PKG_TEST;
    /prompt
    prompt Creating package body PKG_TEST
    prompt ==============================
    prompt
    create or replace package body PKG_TEST is  PROCEDURE TEST (p_rq IN DATE, p_rc OUT rctype) IS
        sqlstr VARCHAR2(32000);
        CURSOR CUR_TESTX IS SELECT * FROM TESTX ORDER BY KPID;
      BEGIN
        '此处省略若干行业务代码...
        OPEN p_rc FOR sqlstr;
      END;end PKG_TEST;
    /
    Dim rs As New ADODB.Recordset
    Private Sub Command1_Click()
        '更新窗体标题
        Me.Caption = "正在查询,请稍候..."
        
        '检索数据
        '定义一个COMMAND对象
        Dim cmd As New ADODB.Command
        
        '命令类型为文本
        cmd.CommandType = adCmdText
        
        '命令文本采用 {call PackageName.ProcedureName(?,{resultset 0,RefCursor})}
        '的形式,其中:
        '         ? 是传入参数
        ' RefCursor 是REF CURSOR类型的传出参数
        cmd.CommandText = "{call PKG_TEST.TEST(?,{resultset 0,p_rc})}"
        
        '添加传入参数
        cmd.Parameters.Append cmd.CreateParameter("p_rq", adDate, adParamInput)
        
        '给传入参数赋值:查询日期
        cmd(0) = Date
        
        '设置连接
        Set cmd.ActiveConnection = Cnn
        
        '获取数据
        rs.CursorType = adOpenStatic
        rs.LockType = adLockReadOnly
        Set rs.Source = cmd
        rs.Open
        
        '显示数据
        Set GridQuery.DataSource = rs
        
        '关闭记录集
        rs.Close    '更新窗体标题
        Me.Caption = "查询结束"
        
    End Sub