2013-04-09 80 views
1

我正在從ASP.NET SqlDataSource調用包中的存儲過程,但是我不斷收到以下錯誤。在Oracle |中登錄存儲過程錯誤:PLS-00306

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是查看是否有任何行返回給定的用戶名和密碼,以驗證試圖登錄的用戶。

誰能告訴我我做錯了什麼?我搜索了幾個小時,並嘗試了幾件沒有運氣的東西。非常感謝!

回答

1

解決!

令人尷尬的是我的問題的答案在我的SqlDataSourceSelectParameters

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

我提供的名稱爲P_USERPASSWORD而不是簡單地P_PASSWORD

顯然,我忘了切換我SqlDataSource這是iniatally我在SelectCommand它select語句編程真實存儲過程對口之後去改變它。

1

如果您的"P_RESULTS"int32字段,請嘗試將out參數的類型更改爲OracleDbType.Int32。

我希望它有效。

檢查這個職位。 C#: Oracle Data Type Equivalence with OracleDbType

+0

我已經試過DbType已經沒有運氣。我也嘗試過使用Decimal和Double。感謝您的快速反應! – MPaul 2013-04-09 14:38:42

+0

你見過這個嗎? http://docs.oracle.com/cd/B19306_01/win.102/b14307/OracleDbTypeEnumerationType.htm – Jeyvison 2013-04-09 14:43:56

+0

是的,我看了它,當你先前發佈它,但改爲十進制,雙或任何其他數字類型didn不幸的是不能解決問題 – MPaul 2013-04-09 14:54:10