[SQL] 時間格式要用hh24:mi:ss或hh12:mi

看下圖的差異其實不難看出TODAY_2的時間是錯的,因為mm在Oracle是「月」的保留字(不管mm還是MM都是一樣的,沒有區分大小寫)

所以在抓時間的時候,取分記得要用「mi」,不要再用「mm」了

米血 發表在 痞客邦 留言(1) 人氣()

[TIPTOP] TT單頭與簽核表單增加欄位的處理方式(只適

以銷退單axmt700為例,先在單頭挖好簽核原因碼欄位(ta_oha05)

然後到表單設計器新增TextBox,並命名成ta_oha05

接著到aws/4gl/aws2_axmt700.4gl裡面新增以下程式碼:

記得DEFINE段的sr變數要多定義ta_oha05,然後改完後儲存重新編譯即可

這樣就大功造成囉~~~~

米血 發表在 痞客邦 留言(0) 人氣()

[TIPTOP] g_success不要寫在CALL s_e

當使用watch g_success if g_success = 'N'的用法DEBUG時,下圖的寫法只看得出來g_success = 'N'但不知是什麼原因造成錯誤....,就變成要下斷點重新DEBUG一次

原本有錯誤代碼-6372,但經過s_errmsg後,就被初始化成0了:

所以要養成良好的寫code習慣,執行SQL後:

1.檢核STATUS、SQLCA.SQLCODE、SQLCA.SQLERRD[3]是否等於0(非必要)

2.若有錯誤請立即讓g_success = 'N'

米血 發表在 痞客邦 留言(0) 人氣()

[TIPTOP] 使用語法建立同義字TABLE

若原本是實體TABLE想要改成VIEW類型的虛擬TABLE要怎麼做呢?

第一步,先drop physical table

第二步,create synonym table

#刪除 wva01.gen_file的實體TABLE

#建立wva01.gen_file的虛擬TABLE,參照來源為cl.gen_file實體TABLE

米血 發表在 痞客邦 留言(0) 人氣()

[SQL] 當使用NOT IN碰到NULL會發生神馬事呢..

嘿嘿~~~SQL真的是一個很神奇的東西

↑如這個圖,SQL這樣下是可以撈得出資料的,但先記一下omb04這個欄位值是NULL

然後呢,當omb04增加 NOT IN的條件時,竟然就撈不出資料了

再然後呢...,我改成用子查詢的寫法,又變得能撈出資料了

還有一個很有趣的,調整exists子查詢寫法後,又撈不出資料了

米血 發表在 痞客邦 留言(0) 人氣()

[excel] 計算有多少個用來補位的0

假設有以下資料,前2碼是前墜符,後6碼為流水號,若在EXCEL想知道有幾個用來補位的0該怎麼做呢?

首先要先整理一下資料,把前綴詞跟流水號拆成不同的欄位,如下圖(可用資料剖析或是MID等函數處理)

接下來就是寫函數囉:

1.先用LEN()函數計算欄位的長度,計算出來的結果是6

2.接著再透過VALUE()函數,將欄位的資料轉換成數值(這也就是為什麼要先拆欄位的原因)

米血 發表在 痞客邦 留言(0) 人氣()

[TIPTOP/T100] STATUS-1214錯誤

下圖l_cnt變數是SQL COUNT(*)出來的結果...

結果居然是負數 -21039...

看到COUNT出來是負數就不用查了,一定是DEFINE l_cnt 變數參照的欄位太小的關係,改DEFINE那邊就能解決了

產中將 l_cnt 定義成LIKE type_file.num5

但看實際撈出的筆數是44497

米血 發表在 痞客邦 留言(0) 人氣()

[SQL] 將不同列資料合併顯示

有時候在多張表join時,很常會出現一對多的情況,如下圖,這實際上是同一筆資料,但被拆成兩筆,這種時候要如何用成一筆資料呢?

這種時候就可以用WM_CONCAT()函式,非常好用的一個東西,用法如下:

WM_CONCAT()必須配合GROUP BY使用!!

米血 發表在 痞客邦 留言(0) 人氣()

[TIPTOP] 使用p_zta匯入create table

在匯入Create Table語法時出現以下錯誤:

經過我一行一行的仔細檢查,發現每行的註解 /* 跟 */都有成雙成對的出現

然後最後終於發現是以下註解出現問題:

/*預設N,Y/N  BY  XX               */

當/*後出現/疑似會讓SQL解析出現問題,我把它改成以下方式就好囉@@"

米血 發表在 痞客邦 留言(0) 人氣()

[SQL] 使用between的限制--資料長度

若今天我想撈取編號A0001~A0015的資料,語法會是

WHERE 編號 IN ('A0001','A0002','A0003','A0004','A0005','A0006','A0007','A0008','A0009','A0010','A0011','A0012','A0013','A0014','A0015')

但通常我們不會這樣寫,尤其是當要撈的資料好幾百筆甚至好幾千筆好幾萬筆的時候,這樣寫會瘋掉...

(當然如果是寫回圈去組那我也沒話說....)

不過通常還是會用BETWEEN這個函式,尤其是在使用CONSTRUCTION包起來的QBE查詢條件,系統也是會內建使用BETWEEN,就會像

米血 發表在 痞客邦 留言(0) 人氣()

[TIPTOP] 使用oracle sql develope

公司沒有買PL/SQL的話就只能用免費的oracle db管理工具連DB囉...

連線設定方式:

    使用者名稱及密碼:即該營運中心的帳號與密碼(可於後台輸入vi $FGLPROFILE後,搜尋username及password)
    但若輸入的system那組帳密,在SQL視窗那的SQL必須加上db來源,比如若是登入system帳號,則SQL必須輸入select * from aa.ima_file 才查得到資料;若是登入aa帳號,則SQL輸入select * from ima_file即可查到資料。
  • 主機名稱:即TIPTOP AP主機的IP位址

米血 發表在 痞客邦 留言(0) 人氣()

假設g_plant='AAA'

若有一串SQL陳述式長這樣:

LET l_sql = "SELECT * FROM oea_file WHERE oea01 = '12345'"

若後面加一段陳述式:

CALL cl_parse_qry_sql(l_sql,g_plant) RETURNING l_sql

米血 發表在 痞客邦 留言(0) 人氣()

Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。