这个不是存储过程的原因吧,估计是string.Format语句写错了

解决方案 »

  1.   

    string[] iName={
    "p_id",
    "p_password",
    "p_postalcode",
    "p_address",
     };
    string[] iValue={
    this.LblYjsId.Text.Trim(),
    this.TxtYjsPassWord.Text,
    this.TxtYjsName.Text.Trim(),
    this.TxtPostalcode.Text.Trim(),
    this.Txtaddress.Text.Trim(),
    this.TxtSjhm.Text.Trim()
    };
    string[] oName={"p_out"};
    string[] oValue={""};ArrayList result=Oracle.NonQueryOracle(Oracle.getConnectstr(),"CS_YJS_UPDATE",iName,iValue,oName,oValue);
    if((string)result[1]=="")
    {
    script += @"<script language=javascript>window.alert('更新会员资料成功!');</script>";
    }
    else
    {
    script += @"<script language=javascript>window.alert('"+(string)result[1]+"');</script>"; //暂时用于调试
    }
      

  2.   

    先检查一下result的元素个数,异常发生在哪一行代码?
      

  3.   

    应该是这里的问题result[1],你就一个参数返回参数,应该是result[0],
    Oracle.NonQueryOracle函数里面有没有错误还不知道呢,去查一下吧。
      

  4.   

    result[0],我已经赋值了。result[1]是我的结果返回值。如果address的值不是空,更新就没有任何的问题。但是,如果address.Text="",就会出现错误!!
      

  5.   

    public static ArrayList NonQueryOracle(string connectstr,string storeName,string[] inParameterName, string[] inParameter, string[] outParameterName,string[] outParameter)
    {
    ArrayList returns = new ArrayList();   //该方法的返回值, 该 ArrayList 的第一项一定是 执行的结果。
    returns.Add("success"); OracleConnection myConnection = null; myConnection = new OracleConnection(connectstr);
    try
    {
    myConnection.Open();
    }
    catch(Exception ee)
    {
    myConnection.Close();
    myConnection.Dispose();
    returns[0] = "false";
    return returns;
    } OracleCommand myCommand = new OracleCommand();
    myCommand.Connection = myConnection;

    //收集入参
    for ( int i = 0; i< inParameter.Length ;i++)
    {
    OracleParameter p1 = new OracleParameter((string)inParameterName[i],OracleType.LongVarChar);
    p1.Direction=System.Data.ParameterDirection.Input;
    p1.Value = (string)inParameter[i];
    myCommand.Parameters.Add(p1);
    } ArrayList outParameters = new ArrayList(); //收集出参
    for ( int i = 0; i< outParameter.Length ;i++)
    {
    OracleParameter p2 = new OracleParameter((string)outParameterName[i], OracleType.VarChar,200);
    p2.Direction = System.Data.ParameterDirection.Output;
    myCommand.Parameters.Add(p2);
    outParameters.Add(p2);
    }
    myCommand.CommandType = System.Data.CommandType.StoredProcedure; myCommand.CommandText = storeName;
    try
    {
    myCommand.ExecuteNonQuery(); //收集出参的值,放入一个 ArrayList 中去 
    for ( int i=0;i<outParameters.Count;i++)
    {
    returns.Add( ((OracleParameter)outParameters[i]).Value.ToString().Trim() );
    }
    }
    catch(Exception ee)
    {
    myCommand.Dispose();
    myConnection.Close();
    myConnection.Dispose();
    returns[0] = ee.ToString() + ee.Source;
    return returns;
    } myCommand.Dispose();
    myConnection.Close();
    myConnection.Dispose();
    returns[0] = "success";

    return returns;
    }
      

  6.   

    异常发生在myCommand.ExecuteNonQuery();
      

  7.   

    字段值不能赋值空串,要用null代替
      

  8.   

    我不太清楚在Oracle中字段值是否可以为空串...Sql Server中应该是可以的。问题应该在这里了。