次のコードを検討して、現在のセッションで作成された一時テーブルに対処できない理由をアドバイスしてください。
CDatabase cdb;
CString csConnectionString = "Dsn=prm2;Driver={INFORMIX 3.34 32 BIT};Host=10.XXX.XXX.XXX;Server=SRVNAME;Service=turbo;Protocol=olsoctcp;Database=DBNAME;Uid=user;Pwd=password";
cdb.OpenEx(csConnectionString, CDatabase::noOdbcDialog);
cdb.ExecuteSQL(CString("Set Isolation to Dirty Read"));
...
CString csStatement1 = "SELECT serno FROM TABLE1 into temp ttt_1;"
CString csStatement2 = "DROP TABLE ttt_1";
cdb.ExecuteSQL(csStatement1); // point1
cdb.ExecuteSQL(csStatement2); // point2
...
cdb.Close();
ポイント1ではすべて問題ありません。ポイント2で私は持っています:
指定されたテーブル (ttt_1) はデータベースにありません。状態:S0002、ネイティブ:-206、元:[Informix][Informix ODBC ドライバー][Informix]
ユーザー名をプレフィックスとして指定しようとしました(user.ttt_1
またはなど"user".ttt_1
); csStatement1のそれぞれのステートメント内に永続テーブルを作成しようとしましたが、point2で失敗するたびに。しかし、csStatement1内で同じ一時テーブルを 2 回作成しようとすると、セッションに一時テーブルが既に存在するというメッセージが表示されました。
アドバイスしてください:何が問題なのか、作成された一時テーブルにどのように対処すればよいでしょうか。