2015-09-07 45 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

相关问题