2016-11-03 10 views
2

私のOracleデータベースをVisual Studioに接続しましたが、今度は自分のデータベースで作成したプロシージャを実行しようとしています。Oracleプロシージャの実行

私はこれを試してみました:

  OracleCommand cmd = new OracleCommand("BEGIN ADD_USER('"+txtName.Text+"','"+txtName2.Text+"',"+txtID.Text+"); END;"); 

      cmd.ExecuteNonQuery(); 

私の手順は、3つのパラメータがあります:名前、2name、IDを。 sqldeveloperでこのコマンドを使用するとうまく動作しますが、プロジェクトで試してみるとエラーになります。

答えて

1
using (OracleConnection cn = new OracleConnection("con string")) 
{ 
    cn.Open(); 
    OracleCommand cmd = new OracleCommand("ADD_USER"); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Connection = cn; 

    cmd.Parameters.Add("YourSPParamName1", OracleDbType.{YourFieldTypeInDB}).Value = txtName.Text; 
    cmd.Parameters.Add("YourSPParamName2", OracleDbType.{YourFieldTypeInDB}).Value = txtName2.Text; 
    cmd.Parameters.Add("YourSPParamName3", OracleDbType.{YourFieldTypeInDB}).Value = txtID.Text; 

    cmd.ExecuteNonQuery(); 
} 

何かこれはうまくいくはずです。

+0

それはほとんど正しかったが、それは私をたくさん助けました。 – ktos1234

+0

@ ktos1234どこに間違いがありましたか? – mybirthname

+0

私はParameters.AddWithValueクラスを持っていなかった、私はParameters.Addを使用しなければならなかった – ktos1234

0

は、ここでそれは私のために働く方法は次のとおりです。

 OracleConnectionStringBuilder sb = new OracleConnectionStringBuilder(); 
     sb.DataSource = "localhost"; 
     sb.UserID = "something"; 
     sb.Password = "pass";   
     OracleConnection conn = new OracleConnection(sb.ToString()); 
     conn.Open(); 
      OracleCommand cmd = new OracleCommand("ADD_USER"); 
      cmd.CommandType = CommandType.StoredProcedure; 
      cmd.Connection = conn; 

      cmd.Parameters.Add("NAME", OracleDbType.Varchar2).Value = txtName.Text; 
      cmd.Parameters.Add("NAME2", OracleDbType.Varchar2).Value = txtName2.Text; 
      cmd.Parameters.Add("ID", OracleDbType.Int32).Value = txtID.Text; 

      cmd.ExecuteNonQuery(); 
関連する問題