2009-11-17 62 views
4

我有一个Oracle脚本,如下所示:甲骨文“SQL错误:在指数:: 1人失踪IN或OUT参数”

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 

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

+2

做你在sqlplus跑的?是你抓住ORA-17041的错误代码?你能提供两个程序的签名吗?桌上有触发器吗? – Christian13467 2009-11-18 08:02:14

+0

错误消息的格式表明您正在使用SQL Developer来运行此脚本。是这样吗?如果是这样,该工具的版本是什么?另外,数据库的版本是什么? – APC 2009-11-18 13:39:46

+0

@APC:SQL Developer 1.5.5,Oracle Express 10.2.0.1.0。 @Christian:No;根本没有ORA错误代码;我可以但是错误肯定发生在UPDATE语句上;没有。 – Otis 2009-11-18 16:56:17

回答

4

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

+1

这不是SQL Developer的问题。 '变量L_kSite号码'是一个特定的SQL plus结构。 – 2014-08-15 16:52:44

9

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

根据this website(第二个awnser),它建议您尝试执行缺少参数的查询。

例如:

exec SomeStoredProcedureThatReturnsASite(:L_kSite); 

您正在尝试没有最后一个参数来执行查询。

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

1

我认为它与jdbc有关。

我有一个类似的问题(失踪PARAM)时,我有一个地方像这样的情况:

a = :namedparameter and b = :namedparameter 

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

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

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

0

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

1

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