2009-04-15 29 views
0

PL/SQLでは、ソースとターゲット・スキーマをストアド・プロシージャのパラメータとして渡したいと思います。ソースのために我々は使用することができます。動的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; 

ターゲット挿入または更新ステートメントの場合、どのように我々はその挿入または更新文の中そのスキーマを使用することができます....誰でも私はそれを行うことができる方法を知っています?

P.S.すみません;私は初心者であり、すばやく書かれたいくつかの関数を取得する必要があります。

+0

は、SQLインジェクションを注意してください。 'the_schema'文字列にhttp://xkcd.com/327のスニペットが含まれているとどうなりますか? –

答えて

2

あなたはSELECTのためにしたINSERTまたはUPDATEのために同じことを行うことができます - このように、動的SQLを使用します。

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