2

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_USER_APIで宣言されています。

  • TBL_USERS.APPLICATIONNAME%TYPE = VARCHAR2(255)
  • TBL_USERS.USERNAME%TYPE = VARCHAR2(255)
  • TBL_USERS.USERPASSWORD%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_RESULTSを使用する理由は、ログインしようとしているユーザーを検証するために、指定されたユーザー名とパスワードで行が返されるかどうかを確認することです。

誰が私が間違っているのか教えてもらえますか? 私は何時間も検索し、いくつかのことを試しましたが、まだ運がありません. どうもありがとう!

4

2 に答える 2

1

解決しました!

恥ずかしいことに、私の問題に対する答えSelectParametersは私のSqlDataSource.

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

私が提供した名前はP_USERPASSWORD、単にP_PASSWORD.

SqlDataSource明らかに、最初に選択ステートメントでプログラムされたSelectCommandものをストアドプロシージャの対応するものに切り替えた後、それを変更するのを忘れていました。

于 2013-04-09T18:06:44.500 に答える
1

フィールドの場合"P_RESULTS"は、out パラメータのタイプを OracleDbType.Int32 に変更してみてください。int32

うまくいくことを願っています。

この投稿を確認してください。C#: OracleDbType と同等の Oracle データ型

于 2013-04-09T14:28:14.967 に答える