Oracle - Proceso almacenado

 
Vista:

Proceso almacenado

Publicado por karen julieth albino olaya (5 intervenciones) el 26/02/2019 16:19:04
Buenos días!
Agradecería alguna ayuda que me puedan dar, llevo trabajando en ello unos días y no he encontrado solución...e buscado y no encuentro nada, es eso o estoy buscando mal
como soy nueva en esto de las bases de datos, no entiendo mucho pero agradeseria mucho si me pueden ayudar

lo que pasa es que estoy haciendo un proceso almacenado, al principio la consulta iba asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CREATE PROCEDURE
IS
BEGIN
SELECT DECODE ('OBJECT_TYPE','TABLE','GRANT SELECT, INSERT, UPDATE, DELETE ON '||'wbalaguera'||'.',
'VIEW','GRANT SELECT ON '||'wbalaguera'||'.',
'SEQUENCE','GRANT SELECT ON '||'wbalaguera'||'.',
'PROCEDURE','GRANT EXECUTE ON '||'wbalaguera'||'.',
'PACKAGE','GRANT EXECUTE ON '||'wbalaguera'||'.',
'FUNCTION','GRANT EXECUTE ON '||'wbalaguera'||'.' )||object_name||' TO CAL_DML_ALL ;'
FROM user_objects
WHERE
OBJECT_TYPE IN ( 'TABLE', 'VIEW', 'SEQUENCE', 'PROCEDURE', 'PACKAGE','FUNCTION')
and lower(object_name) not like '%tableau%'
AND lower(object_name) not like '%qos_%'
AND lower(object_name) not like 'sni_%'
AND lower(object_name) not like '%#t%'
and CREATED>to_date('18/02/2019','dd/mm/yyyy')
ORDER BY OBJECT_TYPE;
END;

Pero la base de datos me dice que en ves de ponerle decode le ponga INTO, listos se lo puse,
pero despues de ejecutarlo me salen 2 errores que son :

PL/SQL: SQL Statement ignored
PL/SQL: ORA-00936: falta una expresión

dice que el error esta en esta linea
y que tambien le falta una expresion y pues ya ahi me perdi

SELECT INTO (OBJECT_TYPE, 'TABLE','GRANT SELECT,INSERT, UPDATE, DELETE ON '||'wbalaguera'||'.',


me podrian ayudar (NO SE SI ME EXPLIQUE BIEN)
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
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Proceso almacenado

Publicado por Rafael (328 intervenciones) el 27/02/2019 08:53:04
Hola:

Algunos temas, a diferencia de otros manejadores de base de datos, ORACLE, NO retorna directamente el resultado de una consulta en un store procedure.

Luego lo que intentas esta fuera de logica...

Si lo que quieres es retornar un resultado de consulta (lease CURSOR), es decir "n" registros deberia de pensar en crear un PACKAGE
que devuelva un PIPELINE.

Ejemplo:
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
30
31
32
33
34
35
36
CREATE OR REPLACE PACKAGE test AS
 
    TYPE measure_record IS RECORD(
       l4_id VARCHAR2(50),
       l6_id VARCHAR2(50),
       l8_id VARCHAR2(50),
       year NUMBER,
       period NUMBER,
       VALUE NUMBER);
 
    TYPE measure_table IS TABLE OF measure_record;
 
    FUNCTION get_ups(foo NUMBER)
        RETURN measure_table
        PIPELINED;
END;
 
CREATE OR REPLACE PACKAGE BODY test AS
 
    FUNCTION get_ups(foo number)
        RETURN measure_table
        PIPELINED IS
 
        rec            measure_record;
 
    BEGIN
        SELECT 'foo', 'bar', 'baz', 2010, 5, 13
          INTO rec
          FROM DUAL;
 
        -- you would usually have a cursor and a loop here
        PIPE ROW (rec);
 
        RETURN;
    END get_ups;
END;
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
sin imagen de perfil
Val: 499
Oro
Ha mantenido su posición en Oracle (en relación al último mes)
Gráfica de Oracle

Proceso almacenado

Publicado por Rafael (328 intervenciones) el 27/02/2019 08:59:35
Independiente de mi respuesta anterior....

Por lo que veo quieres hacer un procedimiento que OTORGUE permisos...

OJO.

Esto tampoco es recomendable dejarlo como un procedimiento almacenado, personalmente trabajando como DBA, lo suyo seria hacer un SCRIPT en PL/SQL que mandes ejecutar desde SQLPLUS, y al cual le pases variables de tal modo que solo tu sepas donde esta el script.

De to query hacer un spool y despues llamar al fichero generado.
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

Proceso almacenado

Publicado por karen julieth albino olaya (5 intervenciones) el 01/03/2019 15:32:29
Hola Buenos días,

gracias por sus respuestas y haberme ayudado con esto

pero de lo del spool no tengo idea, nunca lo e hecho...como dije antes soy nueva en esto, apenas estoy empezando con mi carrera y a pesar de que te entendí, eso del script y el spool ...quede super perdida

aun así muchas gracias por tu tiempo y tus respuestas
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