2009-04-15 7 views
0

En PL/SQL, je souhaite transmettre une source ainsi que le schéma cible en tant que paramètre à une procédure stockée. Pour la source, nous pouvons utiliser:Dynamic PL/SQL

PROCEDURE select_from_schema(the_schema VARCHAR2) 
IS 
    TYPE my_cursor_type IS REF CURSOR; 
    my_cursor my_cursor_type; 
BEGIN 
    OPEN my_cursor FOR 'SELECT my_field FROM '||the_schema||'.my_table'; 

    -- Do your FETCHes just as with a normal cursor 

    CLOSE my_cursor; 
END; 

Pour l'instruction INSERT cible ou mise à jour, comment pouvons-nous utiliser ce schéma dans cette instruction d'insertion ou de mise à jour .... Est-ce que quelqu'un sait comment pourrais-je faire ???

P.S. Excusez-moi; Je suis débutant et je dois obtenir rapidement certaines fonctions.

+0

Prenez garde l'injection SQL. Que se passe-t-il si la chaîne 'the_schema' contient l'extrait de http://xkcd.com/327? –

Répondre

2

Vous pouvez faire la même chose pour une instruction INSERT ou UPDATE que vous avez fait pour un SELECT - utiliser SQL dynamique comme ceci:

EXECUTE IMMEDIATE 'INSERT INTO '||target_schema||'.my_table (col1,col2...) VALUES(:val1, :val2...)' USING my_row.col1, my_row.col2...;