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

初めまして。sql初心者です。OracleのSQLについて質問があります。
「update Aテーブル set Aテーブル.構成順 = (select Bテーブル.順番 from Bテーブル where Aテーブル.ID = Bテーブル.ID and Aテーブル.種類 = Bテーブル.種類CD)」
こういった内容のSQLって発行できるんでしょうか。
Bテーブル.種類CDの"種類CD"で「コンポーネント"種類CD"を宣言してください」というエラーになります。
書き方が分かりません。。
すいませんが教えていただきたく思います。
よろしくお願いいたします。

A 回答 (2件)

書けます。

以下のような感じでSQLを発行します。

update Aテーブル a
set ( Aテーブル.構成順 ) =
( select b.Bテーブル.順番
from Bテーブル b
where a.Aテーブル.ID = b.Bテーブル.ID
and a.Aテーブル.種類 = b.Bテーブル.種類CD
)
where exists (SELECT 'X'
FROM Bテーブル x
where a.Aテーブル.ID = x.Bテーブル.ID
and a.Aテーブル.種類 = x.Bテーブル.種類CD
);

updateの構文は以下マニュアルを参照。
http://otndnld.oracle.co.jp/document/products/or …


OracleでSQLを書いた場合のエラー対処方法としては、

1.エラーコードを確認する。
 ※ORA-XXXXXX、PLS-XXXXXのようなエラーコード。
  これをマニュアル「エラー・メッセージ」で確認。
  対処法を確認する。

2. SQLリファレンスを確認。
  マニュアルのSQLリファレンスを確認し、構文をチェックする。

3. SQLを発行したツールを確認する。
 ツールが対応していない場合もありえるので、
 Oracle標準のツール「SQL*Plus」で発行してみる。 


まずは単体のSQLがSQL*Plusで発行できるか確認してください。
    • good
    • 0
この回答へのお礼

3rd_001様
お礼が遅くなり大変申し訳ありませんでした。
回答ありがとうございました。
対処法まで記載していただきとても嬉しかったです。
質問内容につきましては、解決いたしました。
本当にありがとうございました。

お礼日時:2008/09/08 18:09

その構文自体はOKです(できます)。


しかし、気になるのはエラーメッセージです。
それはPL/SQLのエラーメッセージだと思うのですが、どうやって実行していますか?
    • good
    • 0
この回答へのお礼

jamshid6様
お礼が遅くなり大変申し訳ありませんでした。
回答ありがとうございました。
質問内容につきましては、解決いたしました。
ありがとうございました。

お礼日時:2008/09/08 18:10

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

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