[200分]调用oracle存储过程 同样代码,一台机子正常,一台机子报错,急救!
德仔 2009-10-19 12:25:09 调用oracle存储过程 同样代码,一台机子正常,一台机子报错,急救!
报错如下:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'INSERTTOEBSCODE'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
调用的类是这样的:
/// <summary>
/// 插入已OK的价格至EBS中
/// </summary>
/// <param name="priceForm"></param>
/// <returns></returns>
public bool InsertToEBS(Entity.CAS.PriceFormInfo priceForm)
{
OracleParameter[] parameters =
{
new OracleParameter("P_PRICEFORMID",OracleType.VarChar,20),
new OracleParameter("P_VENDOR_CODE",OracleType.VarChar,20),
new OracleParameter("P_VENDOR_SITE_CODE",OracleType.VarChar,20),
new OracleParameter("P_VAT_CODE",OracleType.VarChar,20),
new OracleParameter("P_ITEM_CODE",OracleType.VarChar,20),
new OracleParameter("P_EFFECTIVE_DATE",OracleType.VarChar,20),
new OracleParameter("P_PURCHASER",OracleType.VarChar,20),
new OracleParameter("P_CHECKER",OracleType.VarChar,20),
new OracleParameter("P_AUDITOR",OracleType.VarChar,20),
new OracleParameter("P_POCT",OracleType.VarChar,10),
new OracleParameter("P_UNIT_PRICE",OracleType.VarChar,20),
new OracleParameter("P_PASSED_DATE",OracleType.VarChar,20),
new OracleParameter("P_TERMS_DESC",OracleType.VarChar,100),
new OracleParameter("v_retval",OracleType.Number)
};
parameters[0].Value = priceForm.FormID.ToString();
parameters[1].Value = priceForm.SupplierCode;
parameters[2].Value = priceForm.Vendor_site_code;
parameters[3].Value = priceForm.Tax.ToString();
parameters[4].Value = priceForm.MaterialCode.Trim();
DateTime effectiveDate= Convert.ToDateTime(priceForm.EffectiveDate.ToString());
DateTime passedDate= Convert.ToDateTime(priceForm.PassedDate.ToString());
if (priceForm.EffectiveDate > priceForm.PassedDate)
{
parameters[5].Value = effectiveDate.ToString("yyyy-MM-dd hh:mm:ss");
}
else
{
parameters[5].Value = passedDate.ToString("yyyy-MM-dd hh:mm:ss");
}
parameters[6].Value = priceForm.Purchaser;
parameters[7].Value = priceForm.Checker;
parameters[8].Value = priceForm.Auditor;
parameters[9].Value = priceForm.POCT;
parameters[10].Value = priceForm.Price.ToString();
parameters[11].Value = passedDate.ToString("yyyy-MM-dd hh:mm:ss");
parameters[12].Value = priceForm.Payment.ToString().Trim();
parameters[13].Direction=ParameterDirection.Output;
try
{
Convert.ToInt32(OracleHelper.ExecuteNonQuery(OracleHelper.ConnectionStringProfile, CommandType.StoredProcedure, "BBKEDU_PO_CAS_PRICE_PKG.InsertToEBSCode", parameters));
int retval = Convert.ToInt32(parameters[13].Value);
if (retval == 1)
{
return true;
}
else
return false;
}
catch (Exception ee)
{
throw ee;
}
finally
{
}
包中的存储过程:
create or replace package BBKEDU_PO_CAS_PRICE_PKG is
-- Author : EASTJAZZ
-- Created : 2009-10-16 0:29:13
-- Purpose :
procedure InsertToEBSCode(P_PRICEFORMID IN VARCHAR2,
P_VENDOR_CODE IN VARCHAR2,
P_VENDOR_SITE_CODE IN VARCHAR2,
P_VAT_CODE IN VARCHAR2,
P_ITEM_CODE IN VARCHAR2,
P_EFFECTIVE_DATE in VARCHAR2,
P_PURCHASER IN VARCHAR2,
P_CHECKER IN VARCHAR2,
P_AUDITOR IN VARCHAR2,
P_POCT IN VARCHAR2,
P_UNIT_PRICE IN VARCHAR2,
P_PASSED_DATE IN VARCHAR2,
P_TERMS_DESC IN VARCHAR2,
v_retval out number);
end BBKEDU_PO_CAS_PRICE_PKG;
我查了好多的贴子,都没有看到类似问题解决办法,不知兄弟们或哪们同仁碰到过同样的问题,提供相关的解决思路,谢谢。
按报错来看,我将所有的类型改成字符类型均不行。在本机测试非常正常,放至服务器上报错。本机是WINXP系统,服务器是win2000英文操作系统,不知是不是这个原因,如果是,又如何解决呢?
急救!谢谢。帮顶有分.