Oracle中的登录存储过程|错误:PLS-00306

Oracle中的登录存储过程|错误:PLS-00306,oracle,stored-procedures,sqldatasource,Oracle,Stored Procedures,Sqldatasource,我正在从ASP.NET SqlDataSource调用一个包中的存储过程,但是我一直收到以下错误 ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'VALIDATE_USER_PRC' ORA-06550: line 1, column 7: PL/SQL: Statement ignored 我的存储过程如下所示: PROCEDURE VALIDATE_USER_PRC

我正在从ASP.NET SqlDataSource调用一个包中的存储过程,但是我一直收到以下错误

ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'VALIDATE_USER_PRC'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
我的存储过程如下所示:

PROCEDURE VALIDATE_USER_PRC(P_APPLICATIONNAME IN TBL_USERS.APPLICATIONNAME%TYPE,
P_USERNAME IN TBL_USERS.USERNAME%TYPE,
P_PASSWORD IN TBL_USERS.USERPASSWORD%TYPE,
P_RESULTS OUT NUMBER)
IS
BEGIN
SELECT COUNT(*) INTO P_RESULTS FROM TBL_USERS WHERE USERNAME=P_USERNAME
AND (USERPASSWORD=P_PASSWORD)
AND APPLICATIONNAME=P_APPLICATIONNAME;
END VALIDATE_USER_PRC;
它在我的包PARENT\u USER\u API中声明

  • TBL_用户。应用程序名称%TYPE=VARCHAR2(255)
  • TBL_用户。用户名%TYPE=VARCHAR2(255)
  • TBL_用户。用户密码%TYPE=VARCHAR2(128)
最后,我的ASP.NET代码如下所示:

<asp:SqlDataSource ID="dsLogin" runat="server" CancelSelectOnNullParameter="false"
   ConnectionString="<%$ ConnectionStrings:ConnectionString %>" 
   ProviderName="<%$ ConnectionStrings:ConnectionString.ProviderName %>" 
   SelectCommand="PARENT_USER_API.VALIDATE_USER_PRC" SelectCommandType="StoredProcedure">
   <SelectParameters>     
      <asp:Parameter Name="P_APPLICATIONNAME" DefaultValue="/PortailParent" Type="String" />
      <asp:ControlParameter ControlID="txtUser" Name="P_USERNAME" PropertyName="Text"  Type="String" />
      <asp:ControlParameter ControlID="txtPass" Name="P_USERPASSWORD" PropertyName="Text"  Type="String" />
      <asp:Parameter Name="P_RESULTS" Direction="Output" Type="Int32" />
   </SelectParameters>
</asp:SqlDataSource>

我使用R\u RESULTS的理由是,为了验证试图登录的用户,是否返回了带有给定用户名和密码的任何行

谁能告诉我我做错了什么?我已经搜索了几个小时,尝试了一些事情,但到目前为止运气都不好。非常感谢

如果
“p_RESULTS”
int32
字段,请尝试将out参数的类型更改为OracleDbType.int32

我希望它能起作用

查看这篇文章

解决了

令人尴尬的是,我的问题的答案出现在我的
SqlDataSource
SelectParameters

<asp:ControlParameter ControlID="txtPass" Name="P_USERPASSWORD" 
     PropertyName="Text" Type="String" /> 

我提供的名称是
p_USERPASSWORD
,而不是简单的
p_PASSWORD


显然,在将
SelectCommand
中的select语句初始编程的
SqlDataSource
切换到它的存储过程对应项后,我忘记了更改它。

我已经尝试过DbType,但也没有成功。我也尝试过使用十进制和双精度。谢谢你的快速回复!你看到这个了吗?是的,我在您之前发布时查看了它,但是更改为十进制、双精度或任何其他数字类型并没有解决问题。不幸的是,错误日志中显示的过程名称与您发布的过程不同。你确定调用了正确的过程吗?哦,很抱歉,我正在用另一个方法进行测试,但是没有,调用VALIDATE\u USER\u PRC时它仍然不起作用。