2015年7月14日 星期二

System.Data.OracleClient與Oracle.DataAccess的變數問題

System.Data.OracleClient跟Oracle.DataAccess.dll 好像對變數的處理不一樣
我有一個查詢語法,日期處理是

DATE between to_date(:DATE || ' 00:00:00','yyyy-mm-dd hh24:mi:ss') and TO_DATE(:DATE || ' 23:59:59','yyyy-mm-dd hh24:mi:ss')
在用前者的時候變數只需要加入一次

Command.Parameters.Add(new OracleParameter("DATE", DATE));
但在用後者的時候,後面那個變數會被認為未給值,
跳出ORA-01008 : Not all variables bound
我要把後面的變數換個名稱,加入兩次變數,才能正常執行

DATE between to_date(:DATE || ' 00:00:00','yyyy-mm-dd hh24:mi:ss') and TO_DATE(:DATE2 || ' 23:59:59','yyyy-mm-dd hh24:mi:ss')

Command.Parameters.Add(new OracleParameter("DATE", DATE));
Command.Parameters.Add(new OracleParameter("DATE2", DATE));
不過同樣的sql在oracle sql developer執行,他也只會要我輸入一次變數值就是了

沒有留言:

張貼留言