Visual CSharp .NET - ERROR [42000] [Oracle][ODBC]Syntax error or access violation

 
Vista:
sin imagen de perfil

ERROR [42000] [Oracle][ODBC]Syntax error or access violation

Publicado por Ruben (6 intervenciones) el 27/03/2014 15:49:07
Estimados amigos, vengo a solicitud de su conocimiento y ayuda.

Estoy realizando una consulta a una base de datos oracle por medio de una consulta dinámica la cual recibe como parámetros las sentencias que deberá ejecutar. Si yo compilo mi código pl/sql y agrego los parámetros manualmente me funciona perfecto, pero al momento en que lo realizo desde mi programa en c-sharp me genera el error que en el titulo se menciona, adjuntare los codigo para que me pueda apoyar me seria de mucha ayuda.

Código C-Sharp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
public DataTable CargarVendedores(EFiltro eFiltro)
        {
            DataTable data = new DataTable();
 
            using (OdbcConnection connection = new OdbcConnection())
            {
                connection.ConnectionString = ConfigurationManager.ConnectionStrings[EUsuario.CADENA_BASE].ConnectionString;
 
                using (OdbcCommand comand = new OdbcCommand())
                {
 
                    comand.Connection = connection;
                    comand.CommandType = CommandType.Text;
                    comand.CommandText = ("{CALL PKG_PMVENTAS.SP_CARGAR_VENDEDORES(?,?,?)");
                    connection.Open();
 
                    comand.Parameters.Add("ve_filtro", OdbcType.NVarChar).Direction = System.Data.ParameterDirection.Input;
                    comand.Parameters["ve_filtro"].Value =eFiltro.FILTRO;
                    comand.Parameters.Add("ve_estado", OdbcType.NVarChar).Direction = System.Data.ParameterDirection.Input;
                    comand.Parameters["ve_estado"].Value = eFiltro.ESTADO;
                    comand.Parameters.Add("ve_orden", OdbcType.NVarChar).Direction = System.Data.ParameterDirection.Input;
                    comand.Parameters["ve_orden"].Value = eFiltro.ORDEN;
                    OdbcDataAdapter da = new OdbcDataAdapter(comand);
                    da.Fill(data);
                    connection.Close();
                    return data;
 
                }
            }

Código Oracle:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
PROCEDURE SP_CARGAR_VENDEDORES(ve_filtro in varchar2,ve_estado in varchar2,ve_orden  in varchar2, vs_vendedores out cur_Datos) as
    V_SQL VARCHAR2(4000);
    VE_SQL_FILTRO VARCHAR2(4000):= ve_filtro;
    VE_SQL_ORDEN VARCHAR2(4000):= ve_orden;
    VE_SQL_ESTADO VARCHAR2(4000):= ve_estado;
 
   begin
   V_SQL:= 'SELECT nvl(rut_vende,0) AS RUT, nvl(cod_vende,0) ';
   V_SQL:= V_SQL || 'AS COD_VENDE,nvl(nom_vende,'' '') AS NOM_VENDE,' ;
   V_SQL:= V_SQL || 'decode(ind_estado,''V'',''VIGENTE'',''N'',''NO VIGENTE'','''') ';
   V_SQL:= V_SQL || 'AS ESTADO,(SELECT NOM_PAIS FROM GG_TPAIS WHERE COD_PAIS = VT_VENDEDOR.COD_PAIS) ';
   V_SQL:= V_SQL || 'AS NOM_PAIS FROM Vt_Vendedor ';
   V_SQL:= V_SQL || VE_SQL_FILTRO ||' '|| VE_SQL_ESTADO ||' '|| VE_SQL_ORDEN ;
 
    open vs_vendedores for V_SQL;
 
    END SP_CARGAR_VENDEDORES;


Gracias amigos!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

ERROR [42000] [Oracle][ODBC]Syntax error or access violation

Publicado por Ruben (6 intervenciones) el 27/03/2014 18:21:35
Estimados,

Fue una tontera el error pero porsiacaso a cualquiera le puede pasar solo faltaba la llave (}) en la invocación al procedimiento.

comand.CommandText = ("{CALL PKG_PMVENTAS.SP_CARGAR_VENDEDORES(?,?,?)");

Saludos!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar