iT邦幫忙

0

tiptop程式 -213

joy036 2013-01-16 17:21:2014665 瀏覽

請問各位大大
有沒有人會鼎新tiptop的程式?
為什麼在FOREACH 中 若加入 insert into table
就會出現這個 error
若不執行 insert 就可以順利執行完 1374 筆資料
確定不是寫入的資料問題
但那會是什麼? 不解?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
6
tzunghua
iT邦新手 4 級 ‧ 2013-01-16 20:07:59
最佳解答

請參考4GL官網文件…
http://www.4js.com/online_documentation/fjs-fgl-manual-html/User/ResultSets.html#RS_FOREACH

foreach,只能用在在record或動態record、array
寫4GL不是難事,去4GL官網看文件就好了

還有疑問,PO CODE上來,我幫你看。

tzunghua iT邦新手 4 級 ‧ 2013-01-17 12:59:10 檢舉
<pre class="c" name="code">
DEFINE g_cxh    DYNAMIC ARRAY OF RECORD
                    cxh02   LIKE cxh_file.cxh02,
           			cxh03   LIKE cxh_file.cxh03,
           			cxh01   LIKE cxh_file.cxh01,
                END RECORD
DEFINE l_sql    STRING
DEFINE g_cnt           LIKE type_file.num10

LET l_sql = "SELECT cxh02, cxh03, cxh01 FROM cxh_file"

PREPARE q001_pb FROM l_sql
DECLARE q001_bcs CURSOR FOR q001_pb

CALL g_cxh.clear() 
LET g_cnt  = 1

FOREACH q001_bcs INTO g_cxh[g_cnt].*
	IF SQLCA.sqlcode THEN
		CALL cl_err('Foreach:',SQLCA.sqlcode,1)
		EXIT FOREACH
	END IF
	LET g_cnt = g_cnt + 1
END FOREACH

這應該是你要的答案了???

6
Albert
iT邦高手 1 級 ‧ 2013-01-16 18:22:00

商業軟體涉及商業利益

有侵權問題

鼎新客製化好像沒開放給經銷商 ?

sunrandy iT邦新手 1 級 ‧ 2013-01-18 10:00:39 檢舉

albertachen提到:
有侵權問題

不會侵權,TT Source有買斷,可自行修改,只要你會改的話

Albert iT邦高手 1 級 ‧ 2013-01-18 10:13:47 檢舉

應該是
沒有開放給第三者
進行修改

WQ iT邦新手 2 級 ‧ 2014-12-24 14:31:18 檢舉

上述所PO的CODE是沒有版權問題
TT 是有SOURCE開放的,但albertachen說的第三者也沒差,
因為版權數已買斷,要怎麼開發是自已的事,
只是保固上的計費就......(也還好就自已維護)

8
Birdy
iT邦新手 5 級 ‧ 2013-01-17 08:37:19

這麼猜測你所描述的狀況 ....
是否請你往幾個方向去檢查

  1. insert table 中的欄位有 尚未 init values 的值. 如數字型態是null.
  2. insert 欄位未齊全 如 table 中有 10個fields, 你只 insert 小於 10 fields
    而少掉的 field 又是數字型態
  3. 如果你有疑慮 , 可將 insert 的tabel 變成 1-2 fields 去測試 能不能 insert進去
    其實是 OK 的 ..
  4. 還有一種狀況可能比較難查出 , 就是 Declare ...Foreach 的 cursor 資料量太大 ,
    程式一執行到此段就 down掉 ,解法是從 informix DB 或 Oracle DB 的 虛擬參數去調
    整.

希望以上對你有幫助 ..

birdy

看更多先前的回應...收起先前的回應...
joy036 iT邦研究生 3 級 ‧ 2013-01-17 13:43:38 檢舉

測試過了insert 的欄位值也正確,但是結果還是一樣.
若真是Cursor資料太大,為什麼不加入insert的指令就沒問題?
還是...需要一段長度就做一次COMMIT 有用嗎? 不解.
暈

joy036 iT邦研究生 3 級 ‧ 2013-01-18 10:09:24 檢舉

謝謝! 果然不是程式的問題,聽說是資源不足
但是那一段我不清楚是不是就是 Oracle DB 參數
這下可煩惱了,寫TipTop一定得學 Oracle 調整?
總之問題解決了,感恩!謝謝

Albert iT邦高手 1 級 ‧ 2013-01-18 10:16:27 檢舉

一定是沒用 Procedure 處理
這樣子搞, 資料大了, 會卡住

tzunghua iT邦新手 4 級 ‧ 2013-01-18 22:09:51 檢舉

跟Oracle參數沒有關係,應該是程式寫法的問題
如果能知道error code或許知道答案…大家現在只是在天馬行空而己

2
ak02
iT邦研究生 1 級 ‧ 2013-01-17 09:51:59

我還不太敢去修改鼎新裡面的資料庫
不了解結構下,還真不太敢動。

我要發表回答

立即登入回答