dポイントプレゼントキャンペーン実施中!

こんにちわ。

いま,VBからテーブル名と列名をバインド変数としてPLSQLに渡しました。
そこで,PLSQLのなかで,
v_Sql := 'UPDATE :Table_Name SET :Column_Name = :After_Change_Value WHERE :Column_Name = :Before_Change_Value ' ;
のようにSQLを組み立て,
DBMS_SQL.PARSE(v_Cursor, v_Sql, DBMS_SQL.NATIVE);
でSQLを解析したところ,ERR-903となってしまいます。
ちなみに,:Table_Nameと:Column_Nameにテーブル名と列名をそのまま記述したところ,上記のエラーはパスできます。
VBからPLSQLにテーブル名と列名を変数として渡して,PLSQLのなかでSQLを解釈するにはどうすれば良いでしょうか?

教えてください。
宜しくお願いします。

A 回答 (2件)

こんにちは。



No.1さんのおっしゃるとおりです・・・。
v_Sqlが文字列なので、「:Table_Name」というテーブル名はおかしいですよね?
カラム名も同様です・・・。
v_Sql := 'UPDATE' || Table_Name || 'SET' || Column_Name || '=' || After_Change_Value
単純に変数を展開して、文字列のSQLを作ってください・・・。
(^^ゞ
    • good
    • 0
この回答へのお礼

taka451213さん

こんにちわ。

教えてもらった方法でできました。
ありがとうございました。

お礼日時:2005/04/03 17:03

ホスト変数を使って、テーブル名や項目を可変要素にすることは出来ません。



ホスト変数を使わずに、直にSQL文にテーブル名や項目名を展開した上で
DBMS_SQL.PARSEしてください。
    • good
    • 0
この回答へのお礼

k_o_r_o_c_h_a_n さん

こんにちわ。

ありがとうございます。
教えてもらった方法でできました。

お礼日時:2005/04/03 17:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す