ORA-06550:PLS-00306: 调用中的参数数量或类型错误;ORA-06550:
Posted
技术标签:
【中文标题】ORA-06550:PLS-00306: 调用中的参数数量或类型错误;ORA-06550:【英文标题】:ORA-06550:PLS-00306: wrong number or types of arguments in call;ORA-06550: 【发布时间】:2014-12-29 07:47:18 【问题描述】:通过 vb.net 进行简单的插入操作,但出现错误:
ORA-06550:第 1 行,第 7 列: PLS-00306:调用“PROCEDURE_NAME”时参数的数量或类型错误 ORA-06550:第 1 行,第 7 列:
可能是我遗漏或忽略了某些东西。一些帮助将不胜感激。
SQL:
CREATE OR REPLACE procedure SG.PROCEDURE_NAME(
TypeDefinitionFinal in Char,
TypeValueFinal in Char,
ValidFrom in Char,
ValidTo in Char,
MethodType in integer,
MethodValue in number,
Reason in Char,
CurrentTimeStamp in Date,
LoggedUser in Char,
StoresList in Char
) as
begin
INSERT INTO TABLE_NAME
(TYPE_DEFINITION, TYPE_VALUE, VALID_FROM, VALID_TO, METHOD, VALUE, REASON, CREATE_TIMESTAMP, ENTERED_BY)
VALUES
(TypeDefinitionFinal ,TypeValueFinal ,ValidFrom ,ValidTo ,MethodType ,MethodValue ,Reason ,CurrentTimeStamp ,LoggedUser );
end;
/
VB.NET 代码:
Dim OraCommand As New OracleCommand("SG.PROCEDURE_NAME", OraConnection)
OraCommand.CommandType = CommandType.StoredProcedure
OraCommand.Parameters.Add(New OracleParameter("TypeDefinitionFinal", OracleType.Char)).Value = TypeDefinitionFinal
OraCommand.Parameters.Add(New OracleParameter("TypeValueFinal", OracleType.Char)).Value = TypeValueFinal
OraCommand.Parameters.Add(New OracleParameter("ValidFrom", OracleType.Char)).Value = ValidFrom
OraCommand.Parameters.Add(New OracleParameter("ValidTo", OracleType.Char)).Value = ValidTo
OraCommand.Parameters.Add(New OracleParameter("MethodType", OracleType.Int32)).Value = MethodType
OraCommand.Parameters.Add(New OracleParameter("MethodValue", OracleType.Number)).Value = MethodValue
OraCommand.Parameters.Add(New OracleParameter("Reason", OracleType.Char)).Value = Reason
OraCommand.Parameters.Add(New OracleParameter("CurrentTimeStamp", OracleType.DateTime)).Value = CurrentTimeStamp
OraCommand.Parameters.Add(New OracleParameter("LoggedUser", OracleType.Char)).Value = LoggedUser
OraCommand.Parameters.Add(New OracleParameter("StoreList", OracleType.Char)).Value = StoreList
OraCommand.ExecuteNonQuery()
【问题讨论】:
VB.Net 代码中 CurrentTimeStamp 的值是多少 您最后的Add
指的是StoreList
而不是StoresList
,但不确定它是否在这里使用了这些名称,如果是这样,它们是否都需要大写(因为它们过程声明中没有引用标识符)?
Alex Poole,它是拼写错误的“StoresList”。你指出了问题,我的问题就解决了。非常感谢您的帮助。
同样的错误?还是权限错误?顺便说一句,如果您没有正确引用他们的名字,人们就不会知道您与他们交谈。使用“@”符号,后跟他们的名字。 IE,@AlexPoole,您应该将您的评论作为答案,以便将其标记为答案。
@Steve - 感谢您的 ping;我可能最终会回来检查,但谁知道呢。我已经把它变成了一个答案,但因为它是如此简单,我也投票关闭作为一个错字......
【参考方案1】:
这只是一个参数名称的差异。在您的过程定义中,您有:
StoresList in Char
但在您的 VB 代码中,您的名称略有不同,缺少 s
:
OraCommand.Parameters.Add(New OracleParameter("StoreList", OracleType.Char)).Value = StoreList
将"StoreList"
更改为"StoresList"
,或将过程定义更改为StoreList
- 只要它们匹配,您采用哪种方式都可以。
【讨论】:
以上是关于ORA-06550:PLS-00306: 调用中的参数数量或类型错误;ORA-06550:的主要内容,如果未能解决你的问题,请参考以下文章
c++如何直接调用自己写的类中的函数,就像调用标准库中的函数那样
MKPolygon 初始化错误“调用中的参数“interiorPolygons”缺少参数”/“调用中的额外参数”