Oracle - Problema con procedure

   
Vista:
Imágen de perfil de Jhon

Problema con procedure

Publicado por Jhon (11 intervenciones) el 19/11/2015 03:04:09
Cordial saludo gente.
Estoy novato en bases de datos y estoy realizando unos ejercicios en Oracle pero lo que me ocurre para mí entra en lo paranormal
He creado con la aplicación web de Oracle, un procedimiento almacenado que he llamado ins_articulo y sirve para insertar registros en la tabla artículo.
Si le digo al programa que me muestre mi procedure me muestra esto:
1
2
3
4
5
6
7
8
9
10
create or replace procedure "INS_ARTICULO"
(titulo IN VARCHAR2,
autor IN VARCHAR2,
editor IN VARCHAR2,
precio IN NUMBER)
is
begin
insert into articulo(tit_art, aut_art, edi_art, prec_art)
values(titulo, autor, editor, precio);
end;

Pero si hago por ejemplo:
1
execute ins_articulo('La hojarasca', 'Gabriel García Márquez', 'Oveja negra', 12000);

Me dirá
1
ORA-00900: invalid SQL statement

Ahora bien, si yo abro la terminal de Oracle y hago el mismo execute, tal cual, me da por bueno el proceso:
1
PL/SQL procedure successfully completed.

La tabla articulo originalmente tenía cuatro artículos. Tiene un Id autoincrementable. Como yo ya he hecho varias veces el execute, este último que hice ha recibido el ID número 9. Si hago un select *from de la tabla puedo ver los datos que inserté ahora. Sólamente los cuatro originales y el último que añadí.
SI hago un count(*) me dirá que hay cinco valores, pero observen que el autoincremental ya va en 9.
SI cierro la terminal y vuelvo a abrirla y hago nuevamente un select *from tendré otra vez los cuatro originales y el count(*) me dirá que hay cuatro elementos.
No tengo ni idea de qué está pasando.
¿Alguna sugerencia? Les agradezco mucho cualquier ayuda.
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
Imágen de perfil de Jhon

Problema con procedure

Publicado por Jhon (11 intervenciones) el 19/11/2015 05:09:09
Creo que finalmente resolví mi misterio y no hace falta llamar a Mulder y Scully
El asunto es que por lo que vi en Stack overflow googleando el error de la aplicación web, que no puedo usar execute desde la ide de oracle, eso es un comando de terminal. Debo usar:
1
2
3
begin
mi_procedure;
end

Lo otro es que estaba cerrando la terminal sin más y debo salir con exit. En cuanto a las ID perdidas aunque no se guardó el registro, no había tenido en cuenta que Oracle no tiene un auto_increment, tuve que usar una secuencia y ya esas id quedaron usadas y pasa a la siguiente aunque el registro haya sido un fracaso (Eso no lo encontré en ningún lado, lo estoy suponiendo tras echarle cráneo),

Ya creo que puedo seguir adelante con el laboratorio de Oracle. Gracias de todos modos gente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de xve

Problema con procedure

Publicado por xve (13 intervenciones) el 19/11/2015 07:45:27
Gracias por compartirlo!!!
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