iT邦幫忙

0

TIPTOP修改zta內部設定長度

當挖洞時我知道要先去ZTA建立該欄位長度與資料型態的選擇
但若有一個欄位已經使用很久了,原先長度設定為 20,6
我現在要改成20,1 但她卻跳出 6372 這個錯誤碼
想問我該怎麼做才能將資料長度修改成20,1呢?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
by2048
iT邦高手 1 級 ‧ 2021-09-11 09:08:02

登入oracle sqlplus
conn ds/ds@TOPTEST;
alter table XXX_file MODIFY (xxx07 number(20,1));
commit;
用tiptop登入 r.s2
p_zta才會變動(所有連動的資料庫皆要做)
基本上20個數字,有6個小數
20個數字,有1個小數 (如要做到這樣,可以用程式控制寫入的值,不用改資料結構)

看更多先前的回應...收起先前的回應...
carry1246 iT邦新手 4 級 ‧ 2021-09-11 09:10:16 檢舉

可是alter table 這不是新增的意思嗎?

by2048 iT邦高手 1 級 ‧ 2021-09-11 09:19:15 檢舉

alter table XXX_file add (xxx07 number(20,1));
這樣才是

carry1246 iT邦新手 4 級 ‧ 2021-09-11 11:54:52 檢舉

當r.s2 ds時會將所有關連到這個欄位的 都變成整數位20且小數只有1位的顯示方式了嗎?

carry1246 iT邦新手 4 級 ‧ 2021-09-11 13:22:45 檢舉

想問一下 所謂的連動資料庫指的是?

by2048 iT邦高手 1 級 ‧ 2021-09-11 15:09:36 檢舉

ds只是存格式,r.c2 r.l2 會用到
連動資料庫指所有的營運中心(每一個都是像ds資料庫,不同名)
如hr
透過 conn hr/hr@TOPTEST;去切換

carry1246 iT邦新手 4 級 ‧ 2021-09-13 08:21:36 檢舉

是在sqlplus內切換營運中心,還是在nettern內,做exe2 aoos901就算是切換營運中心了?

carry1246 iT邦新手 4 級 ‧ 2021-09-13 09:34:34 檢舉

如果我想從程式面下手,我可以如何宣告與處理
我一直沒法把g_occ.occ63的值改成20,1
即使我宣告變數讓g_occ.occc63等於該值也一樣

by2048 iT邦高手 1 級 ‧ 2021-09-13 10:38:28 檢舉

DB的操作是oracle操作範圍,如要客制開欄位,一定要會弄
用nettern or pietty (telnet or ssh)
用oracle帳號登入 sqlplus 進資料庫操作
用tiptop帳號登入 exe2 執行程式
操作目的不同

程式 存入occ63前處理
第1種,在宣告一個變數為純數字
FUNCTION XXX()
DEFINE l_num1 INTEGER
LET l_num1 = g_occ.occ63 * 10 存成整數
LET g_occ.occ63 = l_num1 / 10 變成小數1位

第2種,用函數
LET g_occ.occ63 = cl_digcut(g_occ.occ63,1) 1=小數1位

0
jerryxu4j
iT邦新手 5 級 ‧ 2021-09-19 10:33:55

會出現-6372,這裡猜測應該資料超過該小數位數所造成的,所以我會先進行前置處理

  1. 透過sqlplus進入ORACLE db
  2. 使用round(看要四捨五入還是無條件捨去)將該欄位取位到預計調整的小數1位。ex:UPDATE xxx_file SET xxx99 = round(xxx99,1)
  3. 使用p_zta進行欄位大小調整or匯入ALTER SQL

如果只是針對單一作業的UI操作需要進行控卡or限制小數1位,那麼這裡提供另一個方式,粗俗且快速。

  1. 打開4gl並且找到該FUNCTION
  2. 將欄位宣告成你需要的大小。ex:DEFINE l_xxx99 NUMBER(20,1)
  3. 把該變數放到需要INPUT的AFTER FIELD。如下:
LET l_xxx99 = g_xxx.xxx99
LET g_xxx.xxx99 = l_xxx99

我要發表回答

立即登入回答