![[SQL] 時間格式要用hh24:mi:ss或hh12:mi [SQL] 時間格式要用hh24:mi:ss或hh12:mi](http://s.pixfs.net/f.pixnet.net/images/emotions/sad_smile.gif)
看下圖的差異其實不難看出TODAY_2的時間是錯的,因為mm在Oracle是「月」的保留字(不管mm還是MM都是一樣的,沒有區分大小寫)
所以在抓時間的時候,取分記得要用「mi」,不要再用「mm」了
![[SQL] 時間格式要用hh24:mi:ss或hh12:mi [SQL] 時間格式要用hh24:mi:ss或hh12:mi](http://s.pixfs.net/f.pixnet.net/images/emotions/sad_smile.gif)
看下圖的差異其實不難看出TODAY_2的時間是錯的,因為mm在Oracle是「月」的保留字(不管mm還是MM都是一樣的,沒有區分大小寫)
所以在抓時間的時候,取分記得要用「mi」,不要再用「mm」了
![[TIPTOP] TT單頭與簽核表單增加欄位的處理方式(只適 [TIPTOP] TT單頭與簽核表單增加欄位的處理方式(只適](https://pic.pimg.tw/sdiven1234/1725504122-4192504221-g.png)
以銷退單axmt700為例,先在單頭挖好簽核原因碼欄位(ta_oha05)
然後到表單設計器新增TextBox,並命名成ta_oha05
接著到aws/4gl/aws2_axmt700.4gl裡面新增以下程式碼:
記得DEFINE段的sr變數要多定義ta_oha05,然後改完後儲存重新編譯即可
這樣就大功造成囉~~~~
![[TIPTOP] g_success不要寫在CALL s_e [TIPTOP] g_success不要寫在CALL s_e](https://pic.pimg.tw/sdiven1234/1720404703-2096695285-g_n.png)
當使用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'
![[TIPTOP] 使用語法建立同義字TABLE [TIPTOP] 使用語法建立同義字TABLE](https://pic.pimg.tw/sdiven1234/1719193870-3324696171-g_n.png)
若原本是實體TABLE想要改成VIEW類型的虛擬TABLE要怎麼做呢?
第一步,先drop physical table
第二步,create synonym table
#刪除 wva01.gen_file的實體TABLE
#建立wva01.gen_file的虛擬TABLE,參照來源為cl.gen_file實體TABLE
![[SQL] 當使用NOT IN碰到NULL會發生神馬事呢.. [SQL] 當使用NOT IN碰到NULL會發生神馬事呢..](https://pic.pimg.tw/sdiven1234/1715676458-2154173121-g_n.png)
嘿嘿~~~SQL真的是一個很神奇的東西
↑如這個圖,SQL這樣下是可以撈得出資料的,但先記一下omb04這個欄位值是NULL
然後呢,當omb04增加 NOT IN的條件時,竟然就撈不出資料了
再然後呢...,我改成用子查詢的寫法,又變得能撈出資料了
還有一個很有趣的,調整exists子查詢寫法後,又撈不出資料了
![[excel] 計算有多少個用來補位的0 [excel] 計算有多少個用來補位的0](https://pic.pimg.tw/sdiven1234/1709804210-244957040-g.png)
假設有以下資料,前2碼是前墜符,後6碼為流水號,若在EXCEL想知道有幾個用來補位的0該怎麼做呢?
首先要先整理一下資料,把前綴詞跟流水號拆成不同的欄位,如下圖(可用資料剖析或是MID等函數處理)
接下來就是寫函數囉:
1.先用LEN()函數計算欄位的長度,計算出來的結果是6
2.接著再透過VALUE()函數,將欄位的資料轉換成數值(這也就是為什麼要先拆欄位的原因)
![[TIPTOP/T100] STATUS-1214錯誤 [TIPTOP/T100] STATUS-1214錯誤](https://pic.pimg.tw/sdiven1234/1709281153-916864967-g_n.png)
下圖l_cnt變數是SQL COUNT(*)出來的結果...
結果居然是負數 -21039...
看到COUNT出來是負數就不用查了,一定是DEFINE l_cnt 變數參照的欄位太小的關係,改DEFINE那邊就能解決了
產中將 l_cnt 定義成LIKE type_file.num5
但看實際撈出的筆數是44497
![[SQL] 將不同列資料合併顯示 [SQL] 將不同列資料合併顯示](https://pic.pimg.tw/sdiven1234/1708565863-33968244-g_n.png)
有時候在多張表join時,很常會出現一對多的情況,如下圖,這實際上是同一筆資料,但被拆成兩筆,這種時候要如何用成一筆資料呢?
這種時候就可以用WM_CONCAT()函式,非常好用的一個東西,用法如下:
WM_CONCAT()必須配合GROUP BY使用!!
![[TIPTOP] 使用p_zta匯入create table [TIPTOP] 使用p_zta匯入create table](https://pic.pimg.tw/sdiven1234/1706852291-1759341936-g_n.png)
在匯入Create Table語法時出現以下錯誤:
經過我一行一行的仔細檢查,發現每行的註解 /* 跟 */都有成雙成對的出現
然後最後終於發現是以下註解出現問題:
/*預設N,Y/N BY XX */
當/*後出現/疑似會讓SQL解析出現問題,我把它改成以下方式就好囉@@"
![[SQL] 使用between的限制--資料長度 [SQL] 使用between的限制--資料長度](http://s.pixfs.net/f.pixnet.net/images/emotions/tounge_smile.gif)
若今天我想撈取編號A0001~A0015的資料,語法會是
WHERE 編號 IN ('A0001','A0002','A0003','A0004','A0005','A0006','A0007','A0008','A0009','A0010','A0011','A0012','A0013','A0014','A0015')
但通常我們不會這樣寫,尤其是當要撈的資料好幾百筆甚至好幾千筆好幾萬筆的時候,這樣寫會瘋掉...
(當然如果是寫回圈去組那我也沒話說....)
不過通常還是會用BETWEEN這個函式,尤其是在使用CONSTRUCTION包起來的QBE查詢條件,系統也是會內建使用BETWEEN,就會像
![[TIPTOP] 使用oracle sql develope [TIPTOP] 使用oracle sql develope](https://pic.pimg.tw/sdiven1234/1705563406-3050944995-g_n.png)
公司沒有買PL/SQL的話就只能用免費的oracle db管理工具連DB囉...
連線設定方式:
假設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