
Llamar a secuencia Oracle desde PHP. (Dice que no existe)
Publicado por Ernesto (2 intervenciones) el 01/10/2013 15:36:44
Muy buenas tardes a todos,
Escribo por aqui ya que llevo horas buscando en internet, en ingles y español y nada que doy que alguna solucion posible a este problema.
Resulta que estoy trabajando una aplicacion de nomina desde PHP, cuya base de datos esta en Oracle (desconozco la version). Por ser de nomina el DBA me creo una vista con los datos que necesito mostrar (solo lectura) y una tabla para poder hacer unas validaciones en mi aplicacion (en esa si puedo escribir).
Explicado esto mi problema esta en que necesito la columna ID en AU y para ello el DBA me creó una secuencia (llamada SEC_CONSTANCIAS, por ejemplo)... Desde el manejador que uso (NAVICAT) realizo un Insert y lo hace perfecto, con la columna ID y su valor autoincremental enviando en VALUES sec_constancias.nextval. Todo perfecto hasta aqui, ya he realizado un monton de pruebas. El detalle esta que cuando intento hacerlo desde PHP, activo el debug y me dice que la secuencia no existe lo raro es que copio la misma sentencia que el debug me responde y la pego en navicat y ejecuta el INSERT sin error alguno.
Alguno le ha pasado algo parecido? O alguno ve el error que yo no. Copio y pego lo que estoy haciendo...
Para comezar estoy usando ADOBD para la conexion con ORACLE
Este es el query de prueba que si se ejecuta en NAVICAT
En la tabla PERSONAL.CONTROL_CONSTANCIAS L hay 4 campos ID number, CEDULA number, CODE varchar y por ultima la fecha DATE.
mmm.. que me falta??
Ahhh... claro, lo que estoy ejecutando en el PHP.
Finalmente.. me regresa esto el debug
ORA-02289: no existe la secuencia in bla/bla/bla/bla.php
No tengo permisos en la BD, por lo que editarla o parecido no podré, a menos que espere el dia que "el consultor" (DBA) venga de nuevo, y ese señor viene 1 dia a la semana. Algunos en otros lados me comentaron que era cuestion de los permisos en la BD para los objetos, el tema es que estoy usando el mismo usuario tanto en NAVICAT como en PHP.. Es decir, para efectos de Oracle es la misma persona que esta ejecutando la llamada de la secuencia solo que lo hace de distintos sitios... Estoy llegando a pensar que existe una forma de llamar la secuencia en PHP de otra forma que desconozco y no he conseguido.
Alguien la conoce?
Muchisimas gracias a cualquier que pueda ayudarme... Saludos
Escribo por aqui ya que llevo horas buscando en internet, en ingles y español y nada que doy que alguna solucion posible a este problema.
Resulta que estoy trabajando una aplicacion de nomina desde PHP, cuya base de datos esta en Oracle (desconozco la version). Por ser de nomina el DBA me creo una vista con los datos que necesito mostrar (solo lectura) y una tabla para poder hacer unas validaciones en mi aplicacion (en esa si puedo escribir).
Explicado esto mi problema esta en que necesito la columna ID en AU y para ello el DBA me creó una secuencia (llamada SEC_CONSTANCIAS, por ejemplo)... Desde el manejador que uso (NAVICAT) realizo un Insert y lo hace perfecto, con la columna ID y su valor autoincremental enviando en VALUES sec_constancias.nextval. Todo perfecto hasta aqui, ya he realizado un monton de pruebas. El detalle esta que cuando intento hacerlo desde PHP, activo el debug y me dice que la secuencia no existe lo raro es que copio la misma sentencia que el debug me responde y la pego en navicat y ejecuta el INSERT sin error alguno.
Alguno le ha pasado algo parecido? O alguno ve el error que yo no. Copio y pego lo que estoy haciendo...
Para comezar estoy usando ADOBD para la conexion con ORACLE
Este es el query de prueba que si se ejecuta en NAVICAT
1
INSERT INTO PERSONAL.CONTROL_CONSTANCIAS (ID,CEDULA,CODE_CONS,FECHA_ULTIMA) VALUES (sec_constancias.nextval, 17855837, 'ABC123', '03/Jan/2013')
En la tabla PERSONAL.CONTROL_CONSTANCIAS L hay 4 campos ID number, CEDULA number, CODE varchar y por ultima la fecha DATE.
mmm.. que me falta??
Ahhh... claro, lo que estoy ejecutando en el PHP.
1
2
$query_control = " INSERT INTO PERSONAL.CONTROL_CONSTANCIAS (ID,CEDULA,CODE_CONS,FECHA_ULTIMA) VALUES (sec_constancias.nextval, 17855837, 'ABC123', '03/Jan/2013') ";
$db->Execute($query_control);
Finalmente.. me regresa esto el debug
ORA-02289: no existe la secuencia in bla/bla/bla/bla.php
No tengo permisos en la BD, por lo que editarla o parecido no podré, a menos que espere el dia que "el consultor" (DBA) venga de nuevo, y ese señor viene 1 dia a la semana. Algunos en otros lados me comentaron que era cuestion de los permisos en la BD para los objetos, el tema es que estoy usando el mismo usuario tanto en NAVICAT como en PHP.. Es decir, para efectos de Oracle es la misma persona que esta ejecutando la llamada de la secuencia solo que lo hace de distintos sitios... Estoy llegando a pensar que existe una forma de llamar la secuencia en PHP de otra forma que desconozco y no he conseguido.
Alguien la conoce?
Muchisimas gracias a cualquier que pueda ayudarme... Saludos
Valora esta pregunta


0