2016-04-29 6 views
0

私はtextboxを持っており、休暇イベントに私はtextboxsはので、私はコードの下に作られた他のデータを取得するためにOracleの機能を使用していますが、私は何もデータがC#のは、Oracle関数からパラメータを返す

private void TB_PRODUCT_DESC_Leave(object sender, EventArgs e) 
    { 
     string connstr = "Data Source=JDT; User Id=admin; password=admin;"; 

     string cmdtxt = @"F_GET_PRODUCT_INFO"; //~ Returning CUSTOMER_ID from trigger in database ~// 

     using (OracleConnection conn = new OracleConnection(connstr)) 
     using (OracleCommand cmd = new OracleCommand(cmdtxt, conn)) 
     { 
      try 
      { 
       cmd.CommandText = cmdtxt; 
       cmd.CommandType = CommandType.StoredProcedure; 

       cmd.Parameters.Add(new OracleParameter("TB_PRODUCT_DESC", TB_PRODUCT_DESC.Text)); 
       cmd.Parameters.Add(":V_PRODUCT_DESC", OracleDbType.Varchar2, ParameterDirection.ReturnValue); 

       conn.Open(); 

       cmd.ExecuteReader(); 

       TB_NOTES.Text = (cmd.Parameters[":V_PRODUCT_DESC"].Value).ToString(); 

       MessageBox.Show(TB_NOTES.Text); 
      } 
      catch (Exception EX) 
      { MessageBox.Show(EX.Message, "error msg", MessageBoxButtons.OK, MessageBoxIcon.Error); } 
     } 

機能I見つからなかっ取得していますあなたがVARCHAR2のサイズを指定する必要が

そのリターン1つのVARCHAR2値以下
CREATE OR REPLACE FUNCTION F_GET_PRODUCT_INFO (P_PRODUCT_ID NUMBER) 
    RETURN VARCHAR2 
IS 
    V_PRODUCT_DESC   VARCHAR2 (200); 
    V_UNIT_PRICE     NUMBER; 
    V_MEASUREMENT_UNIT  VARCHAR2(32); 
BEGIN 
    SELECT PRODUCT_DESC, 
       UNIT_PRICE, 
       MEASUREMENT_UNIT 
    INTO V_PRODUCT_DESC, 
       V_UNIT_PRICE, 
       V_MEASUREMENT_UNIT 
    FROM WAREHOUSE 
    WHERE PRODUCT_ID = P_PRODUCT_ID; 

    RETURN V_PRODUCT_DESC; 
END F_GET_PRODUCT_INFO; 
+0

可能性のある重複したSOの質問:http://stackoverflow.com/questions/23199713/c-sharp-call-oracle-stored-function –

+0

@rontornambe私は正しい2つの間違い「ParameterDirection」を持っているが、戻り値と「cmdをする必要があります。実行する前にParameters.Add」をする必要がありますが、今、私は何のデータ見つかったエラーを取得していないのです – samer

答えて

1

を使用しています:

OracelParameter prm = new OracleParameter(":V_PRODUCT_DESC"); 
      prm.Direction = ParameterDirection.ReturnValue; 
      prm.DbType = OracleDbType.Varchar2; 
      prm.Size = 200; 
      cmd.Parameters.Add(prm); 
関連する問題