ADO.NET执行ORALCE的FUNCTION的紧急问题???

wjianl 2006-02-27 06:00:06
有ORACLE的FUNCTION ,过程在MEMBER包下,代码如下:
FUNCTION F_MEMBER_RECRUITMENTS
(CARDID VARCHAR2, member_name VARCHAR2, GENDER VARCHAR2, BIRTHDAY VARCHAR2
,V_CERTIFICATE_TYPE NUMBER,V_CERTIFICATE_CODE VARCHAR2, V_TELEPHONE VARCHAR2
, COMPANY_PHONE VARCHAR2,FAMILY_PHONE VARCHAR2,v_card_type number, V_POSTCODE VARCHAR2
, DELIVERY_ADDRESS VARCHAR2, v_MSC number,catalog_type number, EMAIL VARCHAR2
, EVENT_DATE VARCHAR2,OPERATOR_ID number, RECOMMEND_ID integer,gift_id integer
, join_other number, COMMENTS VARCHAR2,COMPANY_ID number,source_id VARCHAR2 default '000')
RETURN number IS
BEGIN
END;

现如下代码访问:
OracleConnection cn = new OracleConnection(connectionString);
OracleCommand cmd = new OracleCommand();
cmd.Connection = cn;
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText="MEMBER.F_MEMBER_RECRUITMENTS";

cmd.Parameters.Add("CARDID", OracleType.NVarChar).Value=crmRecord["card_id"];
cmd.Parameters.Add("member_name",OracleType.NVarChar).Value=crmRecord["name"];
cmd.Parameters.Add("GENDER",OracleType.Char,1);
cmd.Parameters["GENDER"].Value=IfEmpty(crmRecord["gender"].ToString().Trim(),DBNull.Value);
DateTimeFormatInfo dfi=new DateTimeFormatInfo();
dfi.ShortDatePattern="yyyy-mm-dd";
//cmd.Parameters.Add("BIRTHDAY",OracleType.VarChar).Value=((DateTime)crmRecord["birthday"]).ToString("d",dfi);
cmd.Parameters.Add("BIRTHDAY",OracleType.NVarChar,10);
cmd.Parameters["BIRTHDAY"].Value=((DateTime)crmRecord["birthday"]).ToString("d",dfi);
cmd.Parameters.Add("V_CERTIFICATE_TYPE",OracleType.Number).Value=Int32.Parse(crmRecord["certificate_type"].ToString());
cmd.Parameters.Add("V_CERTIFICATE_CODE", OracleType.NVarChar,20);
cmd.Parameters["V_CERTIFICATE_CODE"].Value=IfEmpty(crmRecord["certificate_code"].ToString().Trim(),DBNull.Value);
cmd.Parameters.Add("V_TELEPHONE",OracleType.NVarChar,20);
cmd.Parameters["V_TELEPHONE"].Value=IfEmpty(crmRecord["telephone"].ToString().Trim(),DBNull.Value);
cmd.Parameters.Add("COMPANY_PHONE",OracleType.NVarChar,20);
cmd.Parameters["COMPANY_PHONE"].Value=crmRecord["company_phone"];
cmd.Parameters.Add("FAMILY_PHONE",OracleType.NVarChar,20).Value=crmRecord["family_phone"];

cmd.Parameters.Add("v_card_type",OracleType.Number).Value=Int32.Parse(crmRecord["card_type"].ToString());
cmd.Parameters.Add("V_POSTCODE",OracleType.NVarChar).Value=crmRecord["postcode"];
cmd.Parameters.Add("DELIVERY_ADDRESS",OracleType.NVarChar,50);
cmd.Parameters["DELIVERY_ADDRESS"].Value=crmRecord["address"];
cmd.Parameters.Add("v_MSC",OracleType.Number).Value=1;
cmd.Parameters.Add("atalog_type",OracleType.Number).Value=Int32.Parse(crmRecord["catalog_type"].ToString());
cmd.Parameters.Add("EMAIL",OracleType.NVarChar).Value=crmRecord["email"];
cmd.Parameters.Add("EVENT_DATE",OracleType.NVarChar).Value=event_date;
cmd.Parameters.Add("OPERATOR_ID",OracleType.Number).Value=0;
cmd.Parameters.Add("RECOMMEND_ID",OracleType.Int32).Value=0;
cmd.Parameters.Add("gift_id",OracleType.Int32).Value=0;
cmd.Parameters.Add("join_other",OracleType.Number).Value=0;
cmd.Parameters.Add("COMMENTS",OracleType.NVarChar).Value="0";
cmd.Parameters.Add("COMPANY_ID",OracleType.Number).Value=1;
cmd.Parameters.Add("source_id", OracleType.NVarChar).Value="000";

cmd.Parameters.Add("Return_Value",OracleType.Number).Direction = ParameterDirection.ReturnValue;


try
{
cn.Open();
i=cmd.ExecuteNonQuery();
cn.Close();
}
catch(OracleException ex )
{
Log.Debug(ex);
throw ex;
}
finally{
if (cn!=null){
cn.Close();
}
}

程序一直报错:
System.Data.OracleClient.OracleException: ORA-06550: 第 1 行, 第 24 列:
PLS-00306: 调用 'F_MEMBER_RECRUITMENTS' 时参数个数或类型错误
ORA-06550: 第 1 行, 第 7 列:
PL/SQL: Statement ignored
...全文
49 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧