
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
Código Oracle:
Gracias amigos!
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


0