Oracle中的登录存储过程|错误:PLS-00306
我正在从ASP.NET SqlDataSource调用一个包中的存储过程,但是我一直收到以下错误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
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: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时它仍然不起作用。