2015-09-07 69 views
0

ESTE ES EL PROCEDIMIENTO EN LA BASE DE DATOS。PLS-00306:調用c中的參數的數量或類型錯誤#

(翻譯來自谷歌翻譯:這是在數據庫的過程。)

create or replace procedure sp_validarusuario(v_name IN varchar2, v_clave IN varchar2, v_validacion OUT varchar2) 
IS 
BEGIN 
Select 'OK' into v_validacion from usuario where password = v_clave and nombre = v_name; 
EXCEPTION 
WHEN NO_DATA_FOUND THEN 
    v_validacion := 'NOOK'; 
END sp_validarusuario; 
/

ERROR EN C#AL MOMENTO DE EJECUTAR EL SP。

(每個谷歌翻譯翻譯:C#錯誤在執行SP時)

Imagen Error en C#

+2

英語怎麼樣? – 5208760

回答

1

在你的C#代碼使用此:

cmd.Parameters.add("v_validacion",OracleDbType.varchar2).Direction=ParameterDirection.Output 

取而代之的是:

cmd.Parameters.add("v_validacion",OracleDbType.varchar2).Direction=ParameterDirection.ReturnValue 

參考ParameterDirection Enumeration MSDN

+0

MSDN描述在Oracle的上下文中有些誤導。存儲過程不能有* return *參數。在Oracle中,只有函數具有(單個)返回參數。 – Codo

+0

@Codo:你是正確的,程序不能有RETURN值;然而,你暗示過程不能有'OUT'參數是錯誤的。程序可以有多少個你想聲明的'OUT'參數,受限於任何一個程序,光標或函數的65536個參數的限制。我在上面的示例代碼中看到的大問題是,所討論的枚舉是'ParameterDirection',而不是'ParametreDirection'(儘管文檔引用具有拼寫正確)。 –

+0

我沒有暗示任何關於* out *參數的內容。 – Codo

相關問題