我在用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;那位大哥能帮我解决一下,小弟在这里先谢了!
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;那位大哥能帮我解决一下,小弟在这里先谢了!
----------------------------把其中的 Provider=OraOLEDB.Oracle.1 改为 Provider=MSDAORA.1 试试:
adCmdTable改為adCmdStoredProc
----------------------
这里是调用包,CommandType应该是adCmdStoredProc,怎么写成adCmdTable了?