您的位置 首页 网络技术

ORA-01008: 并非所有变量都已绑定( PL/SQL ORA-01008 : Not all variables bound)

我遇到了一个Oracle问题,到目前为止,我一直无法找到原因。下面的查询在Oracle SQL Developer中有效,但是在.NET中运行时会抛出:

ORA-01008并非所有变量都已绑定

我试过了:

更改lot_priority的Oracle数据类型(Varchar2或int32)。
更改lot_priority的.NET数据类型(字符串或整数)。
一个绑定变量名称在查询中使用两次。在其他在多个位置使用相同绑定变量的其他查询中,这不是问题,但是为了确保我尝试将第二个实例设为具有不同的:name的自己的变量,并将其分别绑定。
绑定变量的几种不同方式(请参见注释的代码;另请参见其他方法)。
移动bindByName()调用。
用文字替换每个绑定变量。我有两个单独的变量导致此问题(:lot_pri和:lot_priprc)。我不记得两者之间有一些细微的变化。更改为文字可以使查询工作,但确实需要使用绑定。

今天碰到一个很普通的问题:ORA-01008:并非所有的变量都已绑定,看着错误的提示,总以为是自己的变量和值不是对称的,检查了很多遍,后来,突然想起可能是因为变量的值是null造成的,而并非值和和变量没有一一对应。经检查发现,确实有一个值是null,不是空格,然后把值改成空格,就好了

ORA-01008并非所有变量都绑定

原因:包含替换变量的SQL语句未绑定所有变量而被执行。在执行SQL语句之前,所有替换变量必须具有替换值。