把@符号去掉  OracleParameter p1 = new OracleParameter("v_empno", OracleType.Int32);
  OracleParameter p2 = new OracleParameter("v_sal",OracleType.Double); 

解决方案 »

  1.   

    这是给你的参考代码CREATE PROCEDURE AddAreaRecord --创建视图
    (
    @AreaNo nvarchar(10),
    @AreaName nvarchar(10),
    @BulidNum int, @Coord nvarchar(10),
    @Re nvarchar(50))
     AS
    Begin Transaction Add_AreaRecord
    IF Exists (SELECT 1 FROM Area Where AreaNo = @AreaNo) --判断表里面是否有该条记录
    ROLLBACK TRANSACTION Add_AreaRecord  --如果有则不执行ELSE  --否则,执行添加另一个表的记录
    BEGIN INSERT INTO Area --添加一个表的记录
    (AreaNo,AreaName,BulidNum,Coordinate,Re)
    VALUES
    (@AreaNo,@AreaName,@BulidNum,@Coord,@Re) COMMIT TRANSACTION Add_AreaRecord  --提交事务 END
    GO            SqlConnection conn = G_SqlExecute.GetCon();
                conn.Open();
                SqlCommand myCommand = new SqlCommand("AddAreaRecord", conn);            //指明sql的操作类型是存储过程
                myCommand.CommandType = CommandType.StoredProcedure;            //给存储过程添加参数
                SqlParameter para1 = new SqlParameter("@AreaNo", SqlDbType.NVarChar, txtAreaNo.Text.Length);
                para1.Value = txtAreaNo.Text;
                myCommand.Parameters.Add(para1);            SqlParameter para2 = new SqlParameter("@AreaName", SqlDbType.NVarChar, txtAreaName.Text.Length);
                para2.Value = txtAreaName.Text;
                myCommand.Parameters.Add(para2);            SqlParameter para3 = new SqlParameter("@BulidNum", SqlDbType.NVarChar, txtBulidNum.Text.Length);
                para3.Value = txtBulidNum.Text;
                myCommand.Parameters.Add(para3);            SqlParameter para4 = new SqlParameter("@Re", SqlDbType.NVarChar, rtbRe.Text.Length);
                para4.Value = rtbRe.Text;
                myCommand.Parameters.Add(para4);            SqlParameter para5 = new SqlParameter("@Coord", SqlDbType.NVarChar, txtCoord.Text.Length);
                para5.Value = txtCoord.Text;
                myCommand.Parameters.Add(para5);
                if (myCommand.ExecuteNonQuery() > 0)
                {
                    MessageBox.Show("数据添加成功!");
                    initAreaNo();
                    LoadData();
                }
                else
                {
                    MessageBox.Show("数据添加失败!");
                }
                conn.Close();
      

  2.   

    http://blog.csdn.net/itblog/archive/2006/05/24/752869.aspx
      

  3.   

    去掉@变成是这种 异常: 调用SP2时参数个数或类型错误。唉 还是不行,到底是什么原因呀,郁闷ing
      

  4.   

    把存储过程改下create or replace procedure sp2(v_empno in number, v_sal out number) is
    begin
      update emp set sal=sal+200 where empno=v_empno;
      select sal into v_sal from emp where empno=v_empno;
      dbms_output.put_line('员工号:'||v_empno||' 工资:'||v_sal);
    end;
      

  5.   

    还需要定义一个ReturnValue的Parameter的。更多Oracle PL/SQL调用方法,参考:
    http://blog.csdn.net/fangxinggood/archive/2005/10/17/507989.aspx