在本機開發時,sendsql一切都正常,delete, insert, update都蠻正常的。
但是一上傳到workspace,就好像發瘋一樣,速度變慢不說,資料庫似乎也不會更新。
程式碼寫的樣子大致如下:
如果我要更新23筆資料,sendsql也就要執行23次。
這樣速度會變得很緩慢。
想說那來用Stored procedures試試好了,但Hyperion interactive reporting要使用ODBC連線。
研究了很久,也做出ODBC的連線檔,但在Hyperion interactive reporting仍然都還是反灰的狀況。
困擾了很久,問題一直無法解決。
後來不知道從哪裡看來 pl/sql 的寫法,發現只要修改sqlcmd就好了,程式如下:
這個方式就是在sqlcmd頭尾加上begin end。
for迴圈裡面就只是在組字串,最後一次丟到sendsql裡執行,連process()都省了。
不過這個方式只解決了處理速度慢的問題。
資料庫沒有更新的問題,沒想到是在end前,加一個commit;就可以了。
sqlcmd += "commit; end;"
但在本機直接執行bqy的話,不加commit也會更新。
也不知道是甚麼原因,總之最後放在workspace上的可以快速和即時更新資料庫了。
但是一上傳到workspace,就好像發瘋一樣,速度變慢不說,資料庫似乎也不會更新。
程式碼寫的樣子大致如下:
for()
{
var sqlcmd = "update xxx";
section[aaa].sendsql(ocefile,id,pw,sqlcmd);
section[aaa].process();
}
如果我要更新23筆資料,sendsql也就要執行23次。
這樣速度會變得很緩慢。
想說那來用Stored procedures試試好了,但Hyperion interactive reporting要使用ODBC連線。
研究了很久,也做出ODBC的連線檔,但在Hyperion interactive reporting仍然都還是反灰的狀況。
困擾了很久,問題一直無法解決。
後來不知道從哪裡看來 pl/sql 的寫法,發現只要修改sqlcmd就好了,程式如下:
var sqlcmd = "Begin "
for()
{
sqlcmd += "update xxx;";
}
sqlcmd += " end;"
section[aaa].sendsql(ocefile,id,pw,sqlcmd);
這個方式就是在sqlcmd頭尾加上begin end。
for迴圈裡面就只是在組字串,最後一次丟到sendsql裡執行,連process()都省了。
不過這個方式只解決了處理速度慢的問題。
資料庫沒有更新的問題,沒想到是在end前,加一個commit;就可以了。
sqlcmd += "commit; end;"
但在本機直接執行bqy的話,不加commit也會更新。
也不知道是甚麼原因,總之最後放在workspace上的可以快速和即時更新資料庫了。