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 (記載なし)
Copyright © 2013 Power Future Co., Ltd.