IB中 INSERT INTO 的問題 |
答題得分者是:Fishman
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
請問各位! 有 T1,T2兩個TABLE T1 有 A,B,C,D,E 五個欄位
T2 有 A,B,C 三個欄位 我要把 T2的記錄新增到 T1, 同時把 T1.D, T1.E欄位填入一值
我使用 IBSQL 元件, FIREBIRD 1.5版, 試了以下的寫法無法成功 INSERT INTO T1 (A,B,C,D,E) SELECT A,B,C,"DATA1","DATA2" FROM T2 WHERE .... 出現 arithmetic exception, numeric overflow, or string truncation,
我查了一下有關sql的文件, 這樣的寫法是符合 ANSI-92的語法, 應該是可
以通用的, 但不知在 IB無法接受, 不知有沒有其他使用IB的網友有遇到這樣
的狀況知道如何解決的, 謝謝! 發表人 - P.D. 於 2004/03/01 02:50:55
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: Hi: P.D. 大大,確認一下 T1 的 A,B,C 三個 Field Type 必須與 T2 一致,且長度須大於等於 T2 中的設定 ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ---------------------------------- 發表人 - >>< face="Verdana, Arial, Helvetica"> 謝謝 Fishman兄說明, 好一陣子沒看到你了! 我的 T1, T2 A,B,C三個欄位是完全一樣的, 我這個T1的功能就是用做LOG記錄 之用的, 當 T2有任何異動時, 我要記錄T2異動前的狀況, D,E則是記錄何人異動 及時間的! |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi: P.D. 大大,很抱歉因無 InterBase 實際經驗,僅能就 SQL 部分提出建議 1.確認該 Select 語法可以被 InterBase 接受
SELECT A,B,C,"DATA1","DATA2" FROM T2 WHERE ....
2.若該 Select 語法可以接受,確認 T1(Log Table)內的欄位 Type 與 Length
3.簡化一下語法,確認 InterBase 可以接受該語法
INSERT INTO T1 (A,B,C,D,E) SELECT A,B,C,"DATA1","DATA2" FROM T2 WHERE ....
以下為我目前在用的一段 SQL Command(Oracle 8.0.5.1.0),由 D6 中執行,供你參考
BEGIN INSERT INTO MISAPPS.WWEI_OE_ITEM_FORECASTS_A (AUDIT_TIMESTAMP, AUDIT_TRANSACTION_TYPE, AUDIT_USER_ID, AUDIT_USER_NAME, AUDIT_TRUE_NULLS, AUDIT_SESSION_ID, AUDIT_SEQUENCE_ID, AUDIT_COMMIT_ID, FORECAST_ID, ORG_ID, MASTER_ORGANIZATION_ID, SALESREP_ID, INVENTORY_ITEM_ID, PERIOD_YEAR, PERIOD_MONTH, SELLING_PRICE, SQFT, ENABLED_FLAG) SELECT SYSDATE, 'D', NVL(:P_USER_ID,-1), NVL(:P_USER_NAME,'Unknown'), 'YYYYYYYYYY', NVL(USERENV('SESSIONID'),-1), 0, 0, FORECAST_ID, ORG_ID, MASTER_ORGANIZATION_ID, SALESREP_ID, INVENTORY_ITEM_ID, PERIOD_YEAR, PERIOD_MONTH, SELLING_PRICE, SQFT, ENABLED_FLAG FROM MISAPPS.WWEI_OE_ITEM_FORECASTS F WHERE FORECAST_ID = :P_FORECAST_ID; DELETE FROM MISAPPS.WWEI_OE_ITEM_FORECASTS WHERE FORECAST_ID = :P_FORECAST_ID; INSERT INTO MISAPPS.WWEI_OE_ITEM_FORECAST_LINES_A (AUDIT_TIMESTAMP, AUDIT_TRANSACTION_TYPE, AUDIT_USER_ID, AUDIT_USER_NAME, AUDIT_TRUE_NULLS, AUDIT_SESSION_ID, AUDIT_SEQUENCE_ID, AUDIT_COMMIT_ID, FORECAST_ID, FORECAST_LINE_ID, ORG_ID, ORGANIZATION_ID, FORECAST_QUANTITY, PRIOR_SHIPPED_QUANTITY, PRIOR_SHIPPED_AMOUNT, ORDERED_QUANTITY, ORDERED_AMOUNT, SHIPPED_QUANTITY, SHIPPED_AMOUNT, SQFT, ENABLED_FLAG) SELECT SYSDATE, 'D', NVL(:P_USER_ID,-1), NVL(:P_USER_NAME,'Unknown'), 'YYYYYYYYYYYYY', NVL(USERENV('SESSIONID'),-1), 0, 0, FORECAST_ID, FORECAST_LINE_ID, ORG_ID, ORGANIZATION_ID, FORECAST_QUANTITY, PRIOR_SHIPPED_QUANTITY, PRIOR_SHIPPED_AMOUNT, ORDERED_QUANTITY, ORDERED_AMOUNT, SHIPPED_QUANTITY, SHIPPED_AMOUNT, SQFT, ENABLED_FLAG FROM MISAPPS.WWEI_OE_ITEM_FORECAST_LINES WHERE FORECAST_ID = :P_FORECAST_ID; DELETE FROM MISAPPS.WWEI_OE_ITEM_FORECAST_LINES WHERE FORECAST_ID = :P_FORECAST_ID; COMMIT; EXCEPTION WHEN OTHERS THEN ROLLBACK; END;---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |