Colorful Life2010

日归档: 2009年07月06日 | 记录数: 3
Weather:None

生活的变数总是太多,让人实在是无从捉摸,或许我就是因为太看重这些变数,力图让自己有目标才会让自己现在身陷这些变数的漩涡;

也或许是我太容易相信别人会按照自己认为的想法去思考或行动,才会让自己变得如此被动,因为毕竟别人不是我,即使是朋友.所以,希望这种东西,更是不能寄于别人,丁点也不行,要想有希望,终归是要相信自己,相信自己去实现去成功.

也许我让许多人失望过,但也确确实实有非常之多的人让我失望过,总是缺的是希望,而落落无处的总是失望.

以上.

RPG3常用操作码
Weather:None

命令 説明
ACQ 装置獲得(通信用)
ADD 加算
ANDXX AND条件追加
BEGSR サブルーチンの始め
BITOF ビットをオフにセット
BITON ビットをオンにセット
CABXX 比較および分岐
CALL プログラムの呼出し
CASXX サブルーチンの条件つき呼出し
CAT 2つのストリングの連結
CHAIN ファイルからのランダム検索
CHECK 文字検査
CHEKR 逆向きの検査
CLEAR 消去(モードクリア)
CLOSE ファイル・クローズ
COMIT コミット(更新確定)
COMP 比較
DEBUG デバッグ機能
DEFN フィールド定義
DELET レコードの削除
DIV 除算
DO 繰り返し実行
DOUXX 繰り返し実行(DO UNTIL)
DOWXX 繰り返し実行(DO WHILE)
DSPLY 表示機能
DUMP プログラム・ダンプ
ELSE 条件不成立の場合
ENDYY 構造化グループの終り
ENDSR サブルーチンの終り
EXCPT 演算時サイクル外出力
EXFMT 書出し後読取り形式
EXSR サブルーチンの呼出し
FEOD データの強制終了
FORCE 特定ファイルの強制読取り
FREE プログラムの非活動化
GOTO 強制分岐
IFXX 条件分岐
IN データ域の検索
ITER 繰り返し
KFLD キーの各部分の定義
KLIST 複合キーの定義
LEAVE DOグループからの抜け出し
LOKUP テーブルまたは配列要素の探索
MHHZO 上位桁から上位桁へのゾーンの転送
MHLZO 上位桁から下位桁へのゾーンの転送
MLHZO 下位桁から上位桁へのゾーンの転送
MLLZO 下位桁から下位桁へのゾーンの転送
MOVE 移動
MOVEA 配列の転送
MOVEL 左につめて転送
MULT 乗算
MVR 剰余の転送
NEXT 次
OCUR データ構造のオカレンスの設定 / 獲得
OPEN 処理用にファイルのオープン
ORXX OR条件追加
OTHER その他の選択
OUT データ域の書出し
PARM パラメーターの識別
PLIST パラメーター・リストの識別
POST ポスト
READ レコードの読取り
READC 次の変更済みレコードの読取り
READE 等しいキーの読取り
READP 前のレコードの読取り
REDPE キーが等しい前のものの読取り
REL 解放
RESET リセット
RETRN 呼出し元への戻り
ROLBK ロール・バック
SCAN 走査ストリング
SELEC 選択グループの始め
SETGT より大きいレコードへのセット
SETLL 下限のセット
SETOF 標識をオフにセット
SETON 標識をオンにセット
SHTDN 遮断
SORTA 配列の分類
SQRT 平方根
SUB 減算
SUBST サブストリング
TAG タグ
TESTB ビットのテスト
TESTN 数字のテスト
TESTZ ゾーンのテスト
TIME 時刻取得
UNLCK データ域のアンロックまたはレコードの解放
UPDAT 既存のレコードの変更
WHXX 真の場合に選択
WRITE 新しいレコードの作成
XFOOT 配列要素の合計
XLATE 変換
Z-ADD ゼロにして加算
Z-SUB ゼロにして減算

DB2(as400)数据分页SQL
Weather:None

方法1:

利用DB2自带(ORACLE一样)的”ROWNUMBER() OVER(ORDER BY sort-key)”函数来完成,用法如下

select * from (select rownumber() over(order by sortkey1 asc,sortkey2 desc,…) as rownumber_,* from dbname1 order by sortkey1 asc,sortkey2 desc) as temp_db where rownumber_ between ?start+1 and ?end

这种方法由于是DB2自带的,相对来说大量数据的时候效率可能会好点(待求证),但如果是查询的表比较多和条件比较多的时候感觉会有点混乱,容易出错.

 

方法2:

之前用过MSSQL的那种取出前一部分的最大ID然后再取比这个ID大的相对的page size数量的数量,这个方法比较通用一些,但问题是同样组装比较复杂,当然你可以弄到PROC里面,二是这个方法数据量很大的情况下,越往后的分页效率越低,并且效率变化很明显.

 

方法3:

使用”FETCH FIRST ?pagesize ROWS ONLY”,用法如下

select * from dbname1 where key not in(select key from dbname1 FETCH FIRST (page-1)*pagesize ROWS ONLY) FETCH FIRST pagesize ROWS ONLY

这种方法的效率现在还无从考证,但这种方法比较容易组装SQL,因为分页的部分虽然字符比较多,但全放在了条件语句后面.

 

综合三种方法,第二种需要一个排列的KEY,这样的条件,对于AS400里的DB2比较麻烦,因为我操作过的很多表,其实里面是没有用于排序的KEY甚至是没有KEY的,AS400采用自己的游标(类似一个内部的ID)来知道当前是第几条数据.第一第三种方法在KEY这方面相对好一些,但还不是太完美.