insert fantasma a travás de script de unix

cesar
24 de Enero del 2006
Hola,
tengo un script de unix que lanza un paquete oracle. Tras algunas comprobaciones debe realizar un insert en una tabla. Cuando debugeo (lo tengo que lanzar desde el propio paquete) veo que pasa por encima del insert y parece que lo hace bien, ya que no da errores. Pero cuando lo lanzo desde el script, a parte de no ver lo que hace, tampoco graba en la tabla.
He comprobado los permisos, las relaciones y verificado que el procedimiento del insert es correcto, pero no graba, ¿Alguien me puede dar alguna idea?
Gracias

Jor-El
24 de Enero del 2006
¿ No se te habrá olvidao poner commit , verdad ?

andrewsreid
24 de Enero del 2006
Si haces GRANT INSERT ON TABLEA TO ROLE seguido por GRANT ROLE TO USUARIO, éste funciona en SQL*Plus pero no funciona siempre en un PROCEDURE.
En ese caso hay que hacer GRANT INSERT ON TABLA TO USUARIO.

cesar
24 de Enero del 2006
El commit está puesto.
Miro los permisos y por si acaso voy a repasar las relaciones.

Gracias

andrewsreid
24 de Enero del 2006
SQL> @roles
SQL> set echo on
SQL> conn /
Connected.
SQL> show user
USER is "ORACLE"
SQL>
SQL> grant connect, resource to andrew1 identified by reid1;

Grant succeeded.

SQL>
SQL> grant connect, resource to andrew2 identified by reid2;

Grant succeeded.

SQL>
SQL> create role andrews_role;

Role created.

SQL> grant andrews_role to andrew2;

Grant succeeded.

SQL>
SQL> conn andrew1/reid1
Connected.
SQL> create table characters as select 'A' character from dual;

Table created.

SQL> select * from characters;

C
-
A

SQL> grant insert, select on characters to andrews_role;

Grant succeeded.

SQL>
SQL> conn andrew2/reid2
Connected.
SQL> insert into andrew1.characters values ('B');

1 row created.

SQL> select * from andrew1.characters;

C
-
A
B

SQL> create procedure insert_character
2 (new_character char) as
3 begin
4 insert into andrew1.characters values (new_character);
5 end;
6 /

Warning: Procedure created with compilation errors.

SQL> show errors
Errors for PROCEDURE INSERT_CHARACTER:

LINE/COL ERROR
-------- -----------------------------------------------------------------
4/1 PL/SQL: SQL Statement ignored
4/1 PLS-00201: identifier 'CHARACTERS' must be declared
SQL>
SQL> conn andrew1/reid1
Connected.
SQL> grant insert on characters to andrew2;

Grant succeeded.

SQL>
SQL> conn andrew2/reid2
Connected.
SQL> create or replace procedure insert_character
2 (new_character char) as
3 begin
4 insert into andrew1.characters values (new_character);
5 end;
6 /

Procedure created.

SQL> exec insert_character('C');

PL/SQL procedure successfully completed.

SQL> select * from andrew1.characters;

C
-
A
B
C

SQL>
SQL> conn /
Connected.
SQL> show user
USER is "ORACLE"
SQL> drop user andrew1 cascade;

User dropped.

SQL> drop user andrew2 cascade;

User dropped.

SQL> drop role andrews_role;

Role dropped.

SQL>