Oracle“SQL错误:索引处缺少IN或OUT参数::1英寸

e5njpo68  于 2022-11-03  发布在  Oracle
关注(0)|答案(7)|浏览(281)

我有一个Oracle脚本,如下所示:

variable L_kSite number;
variable L_kPage number;
exec SomeStoredProcedureThatReturnsASite( :L_kSite );
exec SomeStoredProcedureThatAddsAPageToTheSite( :L_kSite, :L_kPage );
update SiteToPageLinkingTable 
set HomePage = 1 
where kSite = :L_kSite and kPage = :L_kPage;

假设最后一条语句是绑定变量的有效使用,但当我尝试运行脚本时,我在最后一行得到了这样的结果:

SQL Error: Missing IN or OUT parameter at index:: 1

我不知道如何继续在这里,因为我不是特别精通甲骨文。

e0bqpujr

e0bqpujr1#

当我在Java代码中使用JDBC时,我也遇到过类似的错误。
根据this website(第二个awnser),它表明您正在尝试执行缺少参数的查询。
例如:

exec SomeStoredProcedureThatReturnsASite( :L_kSite );

您正在尝试执行没有最后一个参数的查询。
也许在SQLPlus中它没有相同的要求,所以它在那里工作可能是一种运气。

rekjcdws

rekjcdws2#

根据上面留下的注解,我在sqlplus而不是SQL Developer下运行了此语句,UPDATE语句运行得很好,这让我相信这是SQL Developer中的一个问题,特别是因为没有返回ORA错误号。感谢您引导我找到了正确的方向。

jvlzgdj9

jvlzgdj93#

我认为它与jdbc有关。
当我有一个where条件时,我也有类似的问题(缺少参数),如下所示:

a = :namedparameter and b = :namedparameter

没关系,当我有这样的:

a = :namedparameter and b = :namedparameter2  (the two param has the same value)

所以这是一个命名参数的问题。我认为命名参数的处理有一个bug,看起来好像只有第一个参数得到了正确的值,第二个参数没有被驱动程序类设置。也许这不是bug,只是我不知道什么,但无论如何,我猜这就是为你运行的SQL dev和sqlplus之间的差异的原因。因为据我所知SQL开发人员使用jdbc驱动程序。

pxy2qtax

pxy2qtax4#

我得到了同样的错误,并发现原因是一个错误或缺少外键。(使用JDBC)

rryofs0p

rryofs0p5#

出现此错误是因为某列的别名中有一些打字错误,其中包含问号(例如,contract.reference为contract?ref)

dzhpxtsq

dzhpxtsq6#

我在SQL Developer中遇到问题,因为我错误地使用了绑定。正在使用此绑定,从日志中复制:
变量=?
应该是
变量=:变量
现在,SQL Developer会提示我输入值。

s1ag04yj

s1ag04yj7#

我在一些用户设置中偶尔会出现同样的错误,而其他用户则满足于相同的报告。我用不同的大小写和北欧字母来编写参数,例如:我把它们改成了HENKILO,只使用大写字母,没有北欧字母,它成功了。
驱动程序是Oracle未知或变化的JDBC版本。
我的错误说明来自某个第三方bin:Excel插件错误:执行语句失败(在索引处缺少IN或OUT参数::4)SQL语句失败,请验证并修正!

相关问题