咦,LZ的存储过程好像是SQL SERVER中的,更新语句后连COMMIT都没有,类型也可能有问题,建议LZ好好看一下ORACLE与SQL SERVER的区别

解决方案 »

  1.   

    to  shark2004(伤心小丑) :把@去掉后还是一样...>_<~~
      

  2.   

    我就是不懂才来问的,请问这个存储过程应该怎么改?create or replace procedure ChangePass
    (
     USERNAME_1 IN VARCHAR,
     PASSSWORD_2 IN VARCHAR
    )
    is
    begin
      update TUSERS set PassWord = PASSSWORD_2 where UserName=USERNAME_1;
    end ;麻烦了
      

  3.   

    create or replace procedure ChangePass
    (
     USERNAME_1 IN VARCHAR2,
     PASSSWORD_2 IN VARCHAR2
    )
    is
    begin
      update TUSERS set PassWord = PASSSWORD_2 where UserName=USERNAME_1;
      --这里可以加上异常处理
      commit;
    end ;
      

  4.   

    oracle存储过程参数用@改为:(冒号)
      

  5.   

    5555 ~~~~~~~~~~还是提示:调用 'CHANGEPASS' 时参数个数或类型错误
      

  6.   

    to mqmmx(传说中的肥羊) :@改为: 还是一样啊  ...>_<~~
      

  7.   

    to shark2004(伤心小丑)  :参数名大小写一致起来,结果仍然是这样,,,,好奇怪啊~!
      

  8.   

    下面有一个例子,参考一下吧
    Oracle方面
    1.创建Oracle过程存储
    create or replace procedure proce_test(paramin in varchar2,paramout out varchar2,paraminout in out varchar2)
    as
      varparam varchar2(28);
    begin
      varparam:=paramin;
      paramout:=varparam|| paraminout;  
    end;
    2.测试过程存储
    declare
      param_out varchar2(28);
      param_inout varchar2(28);
    begin
      param_inout:='ff';   
      proce_test('dd',param_out,param_inout);   
      dbms_output.put_line(param_out);
    end;C#方面
    引用Oracle组件 
    using System;
    using System.Data;
    using System.Data.OracleClient;    namespace WebApplication4
    {
         public class OraOprater
         {
             private OracleConnection conn=null;
             private OracleCommand cmd=null;
             public OraOprater()
             {
                  string mConn="data source=ora9i.ora.com;user id=ora;password=ora";  //连接数据库
                  conn=new OracleConnection(mConn);
                  try
                  {
                       conn.Open();
                       cmd=new OracleCommand();
                       cmd.Connection=conn;
                  }
                  catch(Exception e)
                  {
                       throw e;
                  }
             }         public string SpExeFor(string m_A,string m_B)
             {
                    //存储过程的参数声明
                  OracleParameter[] parameters={
                                     new OracleParameter("paramin",OracleType.VarChar,20),
                                    new OracleParameter("paramout",OracleType.VarChar,20),
                                     new OracleParameter("paraminout",OracleType.VarChar,20)
                                                    };
                  parameters[0].Value=m_A;
                  parameters[2].Value=m_B;
                  parameters[0].Direction=ParameterDirection.Input;
                  parameters[1].Direction=ParameterDirection.Output;
                  parameters[2].Direction=ParameterDirection.InputOutput;
                  try
                  {
                       RunProcedure("proce_test",parameters);
                      return parameters[1].Value.ToString();
                  }
                  catch(Exception e)
                  {
                       throw e;
                  }
             }         private void RunProcedure(string storedProcName,OracleParameter[] parameters)
             {
                  cmd.CommandText=storedProcName;//声明存储过程名
                  cmd.CommandType=CommandType.StoredProcedure;
                  foreach(OracleParameter parameter in parameters)
                  {
                       cmd.Parameters.Add(parameter);
                  }
                  cmd.ExecuteNonQuery();//执行存储过程
             }
         }
    }
      

  9.   

    你的调用有问题
    OleDbParameter[] Params=new OleDbParameter[2];
    Params[0]=Proc.MakeParameter("@UserName_1",OleDbType.VarChar,50,Name);
    Params[1]=Proc.MakeParameter("@PassWord_2",OleDbType.VarChar,50,Pass);
    --给你一个例子
    string sql = "lgms_ins.build_out_ins_by_reqs";
                OracleParameter[] parms = new OracleParameter[3];
                parms[0] = new OracleParameter("p_date", OracleType.DateTime);
                parms[0].Value = instructionDate;
                parms[1] = new OracleParameter("p_isschedule", OracleType.Int32);
                parms[1].Value = isSchedule;
                parms[2] = new OracleParameter("p_uid", OracleType.VarChar, 20);
                parms[2].Value = userID;
                OracleHelper.ExecuteNonQuery(sql, CommandType.StoredProcedure, parms);
      

  10.   

    Params[0]=Proc.MakeParameter("@UserName_1",OleDbType.VarChar,50,Name);oracle是不用@lz
    SpDataProc 是你自己定义的类把