2016-11-16 6 views
2

データベースにテーブルMASTER_X_Yがあるとします。動的に入力された変数名を使用してINSERT文を実行できますか?

私は構文は、クエリを実行したい:

変数1と変数2は、別のテーブルから選択されたそれぞれの値XとYを持って
INSERT INTO MASTER_VARIABLE1_VARIABLE2 VALUES (.....); 

これは可能ですか?
(XとYの組み合わせは38個あり、選択したデータを正しい表に挿入するだけです)他の方法もありますか?

私はoracle SQL 11gを使用しています。
PL/SQLプロシージャを作成しているのは初めてのことですが、わかりやすい答えが得られません。

ありがとうございました!

SELECT 'INSERT INTO MASTER_' || t.x || '_' || t.y || ' VALUES(...);' 
FROM YourTable t 

をして出力を実行します。

+0

[PL/SQL動的SQL](http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/dynamic.htm#LNPLS011)というドキュメント・セクションがあります。コメントが建設的になるには遅すぎることは分かっていますが、私は変数値の2つの(インデックス付き)列を持つ単一の 'MASTER'テーブルしか持たないという印象を持っています。 –

答えて

0

はい、それは、これを試してさ。

+0

[dbms_assert.sql_object_name](https://oracle-base.com/articles/10g/dbms_assert_10gR2#SQL_OBJECT_NAME)を使用して、 '' MASTER_ '|| tx ||' || ty'テーブル名をテストすることを忘れないでください。 SQLインジェクションを避けるため)。 – Boneist

+0

はい、これらの種類の表は害を受けることはほとんどありませんが、いつでもその表から保護されていることを確認することをお勧めします。 @Boneist – sagi

+0

テーブル名を入力してすぐに文字列を実行しないようにすることはどういうことですか? like SELECT * FROM var_table_name WHERE col1 = 'a'およびcol2 = 'b'; – kpython

0

宣言セクションにvarchar変数v_sql_stmtを追加し、次のようにステートメントを準備してから、即座に動的に実行します。

v_sql_stmt:= 'INSERT INTO MASTER' || ' '|| VARIABLE1 ||' '|| VARIABLE2 ||' VALUES(.....) ';

即時実行v_sql_stmt;

関連する問題