Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在plsql中传递空值进行选择_Java_Plsql - Fatal编程技术网

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,比较可能应该是“为空”。