PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
18657 03/01/15 18:25:49 動的SQLでランタイムエラー発生してしまう By KITTY

カテゴリ:PowerBuilderの開発環境
日付:2003年01月15日 18:25 発信者:KITTY
題名:動的SQLでランタイムエラー発生してしまう

はじめまして。初心者なので知恵をお貸しください。
現在PB5.0.04からPB8.0.2へバージョンアップの開発作業を行っています。
その中で、動的SQLを利用してEXCELにDBデータを出力する関数があるんですが、以下のようなSQL文を発行して
います。この処理を連続して複数回動かす(コマンドボタンによって起動)と4?5回目で以下のコードの
「DESCRIBE SQLSA INTO SQLDA」の部分で強制終了もしくはPB80J.EXEのランタイムエラーとなってしまいます。
どこか、SQL文の書き方がおかしいのでしょうか?
それともPB8のバグなんでしょうか?
開発環境は、OS:WINDOWS2000 OR WINDOWS XP ,PB VERSION 8.02,DB:ORACLE 8.04です。

コード:
 string      NO
 string      lsSQL
 Boolean     lbRet
 String  lsData[]

lsSQL= \"SELECT A,B,C FROM TABLE1 WHERE A=\'\"+NO+\"\'\"
lsSQL= \"SELECT D FROM TABLE2\"
lsSQL= lsSQL + \" WHERE A=\'\"+NO+\"\'\"

DECLARE emp_cur2 DYNAMIC CURSOR FOR SQLSA ;
PREPARE SQLSA FROM :lsSQL USING SQLCA;
DESCRIBE SQLSA INTO SQLDA ;
OPEN DYNAMIC emp_cur2 USING DESCRIPTOR SQLDA ;
if SQLCA.SQLCode = 100 then
     elseif SQLCA.SQLCode <> 0 then
     (カーソルを閉じて処理を抜ける)
end if
DO WHILE SQLCA.SQLCode = 0
  FETCH emp_cur2 USING DESCRIPTOR SQLDA ;
  CHOOSE CASE SQLCA. sqlcode
  CASE 0
  CASE 100
       (カーソルを閉じてLOOPを抜ける)
      CASE ELSE
         (カーソルを閉じて処理を抜ける)
             END CHOOSE
       for liLp1=1 to SQLDA.numoutputs
        CHOOSE CASE SQLDA.OutParmType[liLp1]
               (データの型毎にローカル変数に退避)
END CHOOSE
(ローカル変数に退避した値を構造体に退避(lsData[liLp1] = lsWk1))
    Next
 (構造体にセットした値を出力用構造体にセット)
Loop
Close emp_cur2;

   上記コードと同様の検索SQL文を複数テーブルに向けて発行しています。この時はカーソルはそれぞれ違
いカーソルを定義しています(emp_cur3とか・・・)

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS (記載なし)
DBMS Oracle SQL*Net 8
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.