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 中的設定 |
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. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |