2013-12-13 73 views
0

我試圖選擇我的表中的一些值,但是當Invoicedate爲空時我得到異常請幫助我!如何通過null值在plsql中選擇

我的代碼:

query="select vend_name,vend_no from account where inv_date = '"+Invoicedate+"' or vend_no = "+Vendorno+" LIMIT 500"; 

請提供任何可能的答案給我。

+0

你能否詳細解釋你的需求 – SpringLearner

+0

當然你在傳遞null的時候會得到一個異常。你在期待什麼? –

+0

IIRR Oracle的正確拼寫是'foo is NULL' –

回答

1

這是因爲在你的代碼中它將變成inv_date = 'null'而不是inv_date is null

你需要做的inv_date "+(Invoiceddate==null?"is null":"= '"+Invoiceddate+"'")+" or

一般來說,這是一個糟糕的方式做事情,雖然你是開放的SQL注入攻擊和各種其他類似問題。

使用PreparedStatement而這一切會爲你處理:

PreparedStatement query = connection.prepareStatement("select vend_name,vend_no from account where inv_date = ? or vend_no = ? LIMIT ?"); 
query.setDate(1, Invoicedate); 
... etc 

還請注意,您應該遵循變量命名等了Java風格的約定,它會幫助人們與您的代碼工作。

+1

另請注意'that = NULL'將不會查找空日期請參見[空值](http://docs.oracle.com/cd/E11882_01/server.112/e26088/sql_elements005.htm#SQLRF30037) – GrahamA

+0

確實,比較應該可能是「爲空」。 –