0

わかりました、私の問題を理解できるように環境を説明します。

  1. IBM Data Studio を使用して、名前が付けられた DB2 データベースに接続して編集しています[dgsmdb]

  2. dgsmadmユーザー名とパスワードを使用してデータベースに接続します。password

  3. 次の名前のスキーマを作成しました。[LOGICGATES]

  4. スキーマ内には、名前が付けられた 3 つのテーブルがあります。[GATEDETAILS]

ここで、次のようなストアド プロシージャを使用して、LOGICGATES スキーマ内の GATEDETAILS テーブルを呼び出すと、次のようになります。

DECLARE c CURSOR FOR SELECT gatename FROM LOGICGATES.GATEDETAILS;

私は次のような問題に遭遇しています:["LOGICGATES.GATEDETAILS" is an undefined name. SQLERROR=42704]、実際には(私自身の理解では)テーブルGATEDETAILSがデータベースに存在しないと言っていることがわかっています。スキーマでGATEDETAILSテーブルを正常に作成したことは明らかなので、これは本当に私を悩ませています。LOGICGATESこれを何時間もチェックしてきましたが、まだ間違いを見つけることができません。私はそれほど上手ではないことを認め、多少見落としている間違いがあるので、これについて助けを求めたいと思います。私の過ちを正してくれる人がいるなら、あなたが私の最後の希望です。私にはこれが本当に必要です。

4

1 に答える 1

1

どのようにテーブルを作成しましたか? テーブルの前にスキーマを配置しましたか?

create table LOGICGATES.GATEDETAILS (col1 type, ...)

または、スキーマを作成してからテーブルを作成するだけです

create schema LOGICGATES;
create table GATEDETAILS (col1 type, ...)

この 2 番目の方法でテーブルを作成した場合、暗黙的なスキーマにより、テーブルの名前は dgsmadm.GATEDETAILS になります。

カタログを見てみる

select tabschema, tabname from syscat.tables where tabschema not like 'SYS%'
于 2013-05-13T16:52:27.583 に答える