11

我有一个如下所示的 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

我不知道如何在这里进行,因为我不是特别精通 Oracle。

4

6 回答 6

19

当我在 Java 代码中使用 JDBC 时,我遇到了类似的错误。

根据此网站(第二个 awnser),它建议您尝试使用缺少的参数执行查询。

例如 :

exec SomeStoredProcedureThatReturnsASite( :L_kSite );

您正在尝试在没有最后一个参数的情况下执行查询。

也许SQLPlus它没有相同的要求,所以它在那里工作可能是幸运的。

于 2011-06-08T02:05:11.907 回答
6

根据上面留下的评论,我在 sqlplus 而不是 SQL Developer 下运行它,并且 UPDATE 语句运行完美,让我相信这是 SQL Developer 中的一个问题,特别是因为没有返回 ORA 错误号。感谢您带领我朝着正确的方向前进。

于 2009-11-18T17:05:40.043 回答
1

我遇到了同样的错误,发现原因是外键错误或丢失。(使用 JDBC)

于 2014-08-15T16:34:13.983 回答
1

我认为它与jdbc有关。

当我有这样的 where 条件时,我遇到了类似的问题(缺少参数):

a = :namedparameter and b = :namedparameter

没关系,当我有这样的时候:

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

所以这是命名参数的问题。我认为命名参数处理存在一个错误,看起来如果只有第一个参数获得正确的值,第二个不是由驱动程序类设置的。也许它不是一个错误,只是我不知道一些事情,但无论如何我想这就是 SQL 开发人员和为你运行的 sqlplus 之间存在差异的原因,因为据我所知,SQL 开发人员使用 jdbc 驱动程序。

于 2012-01-05T23:17:50.703 回答
1

我有这个错误,因为包含问号的列的别名中有一些错字(例如,contract.reference as contract?ref)

于 2016-10-31T13:23:42.580 回答
0

我在 SQL Developer 中遇到问题,因为我错误地使用了绑定。正在使用这个,从日志中复制:

变量 = ?

应该

变量=:变量

现在 SQL Developer 提示我输入值。

于 2022-01-13T21:18:27.430 回答