我在用vb中用ado调用oracle中的procedure过程提示
ora-04044:此处不允许过程,函数,程序包或类型   的错误.VB的调用程序代码:
   Set lConConnection = New ADODB.Connection
   lConConnection.ConnectionString = "Provider=OraOLEDB.Oracle.1;Password=jbt;Persist Security Info=True;User ID=epm40_jbt;Data Source=TEST"
   lConConnection.CommandTimeout = 10
   lConConnection.Open
   Set lCmdMeter = New ADODB.Command
   Set lCmdMeter.ActiveConnection = lConConnection
   lCmdMeter.CommandText = "EPMWN.UP_GET_METEINFO_BYSHIP_VERIFY"
   lCmdMeter.CommandType = adCmdTable  'adCmdStoredProc
''   Set ishipno = lCmdMeter.CreateParameter("ishipno", adChar, adParamInput, 20, mAryNO(0))
''   Set oMeterId = lCmdMeter.CreateParameter("oMeterId", adChar, adParamOutput, 20, "0")
''   Set oMeterType = lCmdMeter.CreateParameter("oMeterType", adChar, adParamOutput, 10, "0")
''   Set oPchsDeptNo = lCmdMeter.CreateParameter("oPchsdeptNo", adChar, adParamOutput, 10, "0")   lCmdMeter.Parameters.Append lCmdMeter.CreateParameter("ishipno", adChar, adParamInput, 20, mAryNO(0))
   lCmdMeter.Parameters.Append lCmdMeter.CreateParameter("oMeterId", adChar, adParamOutput, 20, "0")
   lCmdMeter.Parameters.Append lCmdMeter.CreateParameter("oMeterType", adChar, adParamOutput, 10, "0")
   lCmdMeter.Parameters.Append lCmdMeter.CreateParameter("oPchsdeptNo", adChar, adParamOutput, 10, "0")         Set lRecMeter = New ADODB.Recordset
         Set lRecMeter = lCmdMeter.Execute()调用execute的时候出错!调用ORACLE的的过程代码如下:
CREATE OR REPLACE PROCEDURE EPMWN.UP_GET_METEINFO_BYSHIP_VERIFY(iShipNo     in ms_mt_normal.ship_no%type,
                                                            oMeterId    out ms_mt_normal.meter_id%type,
                                                            oMeterType  out ms_mt_normal.meter_type%type,
                                                            oPchsDeptNo out ms_mt_normal.pchs_dept_no%type) as
  begin
    begin
      select t.meter_id, t.meter_type, t.pchs_dept_no
        into oMeterId, oMeterType, oPchsDeptNo
        from ms_mt_normal t
       where t.ship_no = iShipNo and (t.status_code = '002' or t.status_code = '004') and rownum <= 1;
    EXCEPTION
      WHEN NO_DATA_FOUND THEN
        oMeterId    := NULL;
        oMeterType  := NULL;
        oPchsDeptNo := NULL;
      WHEN OTHERS THEN
        RAISE_APPLICATION_ERROR(SQLCODE, SQLERRM, true);
    end;
  end UP_GET_METEINFO_BYSHIP_VERIFY;那位大哥能帮我解决一下,小弟在这里先谢了!

解决方案 »

  1.   

    lConConnection.ConnectionString = "Provider=OraOLEDB.Oracle.1;Password=jbt;Persist Security Info=True;User ID=epm40_jbt;Data Source=TEST"
    ----------------------------把其中的 Provider=OraOLEDB.Oracle.1 改为 Provider=MSDAORA.1 试试:
      

  2.   

    lCmdMeter.CommandType = adCmdTable  'adCmdStoredProc
    adCmdTable改為adCmdStoredProc
      

  3.   

    lCmdMeter.CommandType = adCmdTable 'adCmdStoredProc
    ----------------------
    这里是调用包,CommandType应该是adCmdStoredProc,怎么写成adCmdTable了?