求解C#调用ORACLE(带有输入输出参数)过程中的错误
已知ORACLE过程如下
create or replace procedure WCL_1
/*制作:* 2007-12-22 针对各类业务操作快速过程 */
(
tiaojian IN VARCHAR2,
P_YXS_BJH IN CHAR, --第几包件
P_YXS_BJ IN Integer, --总包件
P_YXS_XSPC IN VARCHAR2,
P_YXS_SHDH IN VARCHAR2, -- pbjh,pbj,pxspc,pshdh 为预销售处理的参数
P_DJCL_KHBH IN VARCHAR2,
p_DJCL_SPBS IN CHAR,
p_DJCL_SL IN NUMBER,
p_DJCL_CJBZ IN CHAR, -- pspbs,pkhbh,psl,pcjbz 为低价书处理业务参数
P_MLQH IN VARCHAR2,
P_MLQH_XSZK IN VARCHAR2,
P_MLQH_QSSJ IN DATE,
P_MLQH_ZZSJ IN DATE,
result OUT NUMBER, -- '2' 成功,'1'失败
p_nErrCode OUT NUMBER,
p_vErrText OUT VARCHAR2
)
IF tiaojian='mlqhzk' THEN --根据目录期号设置折扣
begin
insert into wcl_12(spbs,xszk,tm)
select b.spbs,P_MLQH_XSZK,P_MLQH from jcdcg_dmlb a,bm_jbxxk b where a.dpzbm_fk=b.dpzbm and a.zdmlqh_pk=P_MLQH;
insert into jcdms_zkb_new(bmbh,yxxl,bbbh,bbmc,spbs,sm,qsrq,zzrq,zkl,szr,szsj,syxz,id)
select '02',b.ywxl,b.bb,b.bb||'|'||c.cbsjc,a.spbs,b.sm,sysdate-10,sysdate-10,a.xszk xszk,'proc',sysdate,'1',WCL_XH.Nextval
from wcl_12 a,bm_jbxxk b,bm_cbsbmb c
where a.spbs=b.spbs
and b.bb=c.bb
and trim(a.tm)=P_MLQH;
end;
END IF;
Commit;
result := 2;
p_nErrCode := 0;
p_vErrText := '成功';
return;
EXCEPTION
--失败数据回滚,显示错误代码!
WHEN OTHERS THEN
Rollback;
result := 1;
p_nErrCode := SQLCODE;
p_vErrText := SQLERRM;
return;
END WCL_1;
我在C# winform中用了以下代码,但是执行过程不成功,后来调试时提示是ORA-06550错误,好像是参数类型与过程中参数不符,现贴上C#中的源码,望各位高手指点一下
private void button1_Click(object sender, EventArgs e)
{
OracleConnection conn = new OracleConnection(Dboperation.connectionstring);
conn.Open();
OracleCommand cmd = new OracleCommand("WCL_1", conn);
cmd.CommandType = System.Data.CommandType.StoredProcedure;
OracleParameter ptiaojian=new OracleParameter("tiaojian",OracleType.Char);
OracleParameter p1=new OracleParameter("P_MLQH",OracleType.Char);
OracleParameter p2=new OracleParameter("P_MLQH_XSZK",OracleType.Char);
ptiaojian.Value = "mlqhzk";
p1.Value = "16901096";
p2.Value = "90";
ptiaojian.Direction = ParameterDirection.Input;
p1.Direction = ParameterDirection.Input;
p2.Direction = ParameterDirection.Input;
OracleParameter resul = new OracleParameter("result",OracleType.Float,4);
OracleParameter errtext = new OracleParameter("p_vErrText", OracleType.VarChar,60);
resul.Direction = ParameterDirection.Output;
errtext.Direction = ParameterDirection.Output;
cmd.Parameters.Add(ptiaojian);
cmd.Parameters.Add(p1);
cmd.Parameters.Add(p2);
cmd.Parameters.Add(resul);
cmd.Parameters.Add(errtext);
try
{
cmd