建立了一个存储过程,一个传入参数v_name,一个返回参数ii,如下
create or replace procedure test_procedure
(v_name in varchar2,
ii out  integer)在sqlplus里执行:exec test_procedue(‘hello’);报错,提示参数个数不对,
请教如何正确执行带有返回参数的存储过程

解决方案 »

  1.   

    如果你已经有了存储过程,如下:
      cmd.CommandText   =   "EXECUTE   存储过程名称   @EmployeeID,@ZhiWu   OUTPUT";//@员工编号为要传入的参数.   
      cmd.Parameters.Add("@EmployeeID",   SqlDbType.Int).Value   =   User;   
      cmd.Parameters["@ZhiWu"].Direction   =   ParameterDirection.Output;   
      cmd.ExecuteNonQuery();   
      string   ID   =   (string)selectCmd.Parameters["@ZhiWu"].Value;   
      这样就可以得到职务   
      如果返回的是多行数据,则   
      SqlDataReader   reader   =   cmd.ExecuteReader();   
      ArrayList   al   =   new   ArrayList();   
      while   (reader.Read())   
      {   
          al.Add(reader.GetValue(0).ToString());//获取第一列中的值   
      }   
      reader.Close();   
      

  2.   

    variable vi number;
    begin
    exec test_procedue('hello',:vi);
    end;
      

  3.   

    或者这个更好些:
    try   something   like   the   following,   note,   you   have   to   close   Reader   first   
      
      cmd   =   new   SqlCommand("test_procedure",conn);   
      cmd.CommandType   =   CommandType.StoredProcedure;   
      cmd.Parameters.Add("@ret",   SqlDbType.Int);   
      cmd.Parameters["@ret"].Direction   =   ParameterDirection.Output;   
        
      SqlDataReader   reader   =   cmd.ExecuteReader();   
      while   (reader.Read())   
      {   
          //   
      }   
        
      reader.Close();   
        
      int   ret   =   (int)cmd.Parameters["@ret"].Value;
      

  4.   

    sql>var x number
    sql>exec test_procedue('hello', :x);
    sql>print :x