Java 如何在plsql中传递空值进行选择
我试图在我的表中选择一些值,但当Java 如何在plsql中传递空值进行选择,java,plsql,Java,Plsql,我试图在我的表中选择一些值,但当Invoicedate为空时,我遇到异常,请帮助我 我的代码: query="select vend_name,vend_no from account where inv_date = '"+Invoicedate+"' or vend_no = "+Vendorno+" LIMIT 500"; 请给我任何可能的答案。这是因为在您的代码中,它将变成inv\u date='null'而不是inv\u date为null 您需要执行inv_date“+(Invoi
Invoicedate
为空时,我遇到异常,请帮助我
我的代码:
query="select vend_name,vend_no from account where inv_date = '"+Invoicedate+"' or vend_no = "+Vendorno+" LIMIT 500";
请给我任何可能的答案。这是因为在您的代码中,它将变成
inv\u date='null'
而不是inv\u date为null
您需要执行inv_date“+(Invoiceddate==null?”为null:“='”“+Invoiceddate+””)+”或
一般来说,这是一种不好的方法,但因为您容易受到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风格的约定,这将有助于人们使用您的代码。您可以更详细地解释您的要求吗?当然,当您传递null时,会出现异常。你在期待什么?IIRR Oracle的正确拼写是foo is NULL
我怀疑你的异常(出于某种原因,你的问题中没有包括)是由于限制500
位,这在Oracle(12c之前的版本)中是不受支持的。另外请注意that=NULL
将找不到空日期参见True,比较可能应该是“为空”。