2011-06-13 82 views
0

我在使用參數化的oracle命令時遇到了問題。該命令似乎識別所有字符串參數(:Id,:CreateUser),但不識別字符參數(:Active)。參數化的oracle命令c#

string qry = @"Insert into GROUP_LOGIN 
       (
       GROUP_ID, 
       CREATED_ON, 
       ACTIVE_FLAG, 
       CREATED_USER 
       ) 
       values 
       (
       :Id, 
       SYSDATE, 
       :Active, 
       :CreateUser 
       )"; 

OracleCommand cmd = dal.GetOracleCommand(); 

if (cmd != null) 
{ 
    cmd.CommandText = qry; 
    OracleParameter op= new OracleParameter("Active",OracleDbType.Char); 
    op.Value = active; 
    //cmd.Parameters.Add(op); 

    OracleParameter[] myParams = new OracleParameter[] 
     { 
     new OracleParameter("Id", this.GrpID), 
     new OracleParameter("Description", this.Description), 
     new OracleParameter("CreateUser", this.Create_User), 
     new OracleParameter("Remarks", this.Remarks), 
     op 
     }; 

    for (int i = 0; i < myParams.Length; i++) 
    { 
     cmd.Parameters.Add(myParams[i]); 
    } 

    //... 
} 

我試圖這樣做的不同的方法,但每次我使用這兩種類型的參數char參數,沒有得到認可。當角色參數只考慮它工作正常,但沒有別的提示錯誤

ORA-01400: cannot insert NULL into ("User"."GROUP_LOGIN"."ACTIVE_FLAG") 
+0

你有沒有嘗試將'active'投射到一個字符串並傳遞給它? – 2016-05-19 12:28:52

回答

0

您設定op.Value = active;的(顯然)空值,讓你確信active確實有一定的價值?基於此代碼,它可能爲空,並且在這種情況下錯誤消息將是有效的。

+0

是活動有價值('我')和參數'op'值也不是空('我')。實際上,該命令顯示了所有3個參數及其各自的值 – 2011-06-13 06:17:55