2011-08-09 24 views
0
INSERT INTO FCR.TRANSACTION (TRX_UNIT, TRX_DATE, TRX_USR, 
     TRX_USR_SN, TRANSACTION_CODE, 
     PRODUCT_CODE, CURRENCY_SHORT_DESCRIPTION, 
     AMOUNT_FC, EXCHANGE_RATE, AMOUNT_DC) 
SELECT SOURCE_SYSTEM_CHANNEL_CODE, to_char(TRANSACTION_DATE), 'dd/mm/yyyy'), 
    USER_CODE, USER_TRANSACTION_SERIAL_NUMBER, TRANSACTION_CODE, 
    PROFITS_PRODUCT_CODE, SHORT_DESCRIPTION, SOURCE_AMOUNT_FC, 
    SOURCE_EXCHANGE_RATE, SOURCE_AMOUNT_EUR 
FROM FCR.ORION_FCR_TRANSACTION 
WHERE TRANSACTION_DATE = 'to_char(" + date + ", 'dd/mm/yyyy')' 

上面的查詢是給我ORA-00923 ERROR. FROM KEYWORD NOT FOUND IN POSITION.ORA-00923 Oracle錯誤

任何人都可以請幫我解決了上述問題。

我認爲錯誤有事情做,在我的C#代碼行:

WHERE TRANSACTION_DATE = 'to_char(" + date + ", 'dd/mm/yyyy')' 
+0

你並不真的需要寫大寫的一切。 SQL有這樣一個傳統;自然語言不。 – whitequark

+0

爲什麼在where子句中引用to_char作爲字符串? –

+1

SO語法突出顯得非常棒! –

回答

3

這是因爲TRANSACTION_DATE後右括號的。

而且你把TO_CHAR在WHERE字符串中也沒有幫助的事實。 :)

我不知道,但如果你只使用一個小缺口可能會有所幫助。如果您的查詢以更具可讀性的方式概述,則更容易發現這樣的錯字。

INSERT INTO FCR.TRANSACTION (
    TRX_UNIT, 
    TRX_DATE, 
    TRX_USR, 
    TRX_USR_SN, 
    TRANSACTION_CODE, 
    PRODUCT_CODE, 
    CURRENCY_SHORT_DESCRIPTION, 
    AMOUNT_FC, 
    EXCHANGE_RATE, 
    AMOUNT_DC) 
SELECT 
    SOURCE_SYSTEM_CHANNEL_CODE, 
    to_char(TRANSACTION_DATE), 'dd/mm/yyyy'), 
    USER_CODE, 
    USER_TRANSACTION_SERIAL_NUMBER, 
    TRANSACTION_CODE, 
    PROFITS_PRODUCT_CODE, 
    SHORT_DESCRIPTION, 
    SOURCE_AMOUNT_FC, 
    SOURCE_EXCHANGE_RATE, 
    SOURCE_AMOUNT_EUR 
FROM 
    FCR.ORION_FCR_TRANSACTION 
WHERE 
    TRANSACTION_DATE = 'to_char(" + date + ", 'dd/mm/yyyy')' 
+0

感謝,但我刪除括號:INSERT INTO FCR.TRANSACTION(TRX_UNIT,TRX_DATE,TRX_USR,TRX_USR_SN,TRANSACTION_CODE,PRODUCT_CODE,CURRENCY_SHORT_DESCRIPTION,AMOUNT_FC,EXCHANGE_RATE,AMOUNT_DC) SELECT SOURCE_SYSTEM_CHANNEL_CODE,TO_CHAR(TRANSACTION_DATE, '日/月/年') ,USER_CODE,USER_TRANSACTION_SERIAL_NUMBER,TRANSACTION_CODE,PROFITS_PRODUCT_CODE,SHORT_DESCRIPTION,SOURCE_AMOUNT_FC,SOURCE_EXCHANGE_RATE,SOURCE_AMOUNT_EUR FROM FCR.ORION_FCR_TRANSACTION WHERE TRANSACTION_DATE = 'TO_CHAR( 「+日期+」, '日/月/年')' 和誤差ORA-00933: sql命令沒有正確處理 – mikespiteri

+2

..和?發生了什麼事嗎? –

+0

@ golezTrol - 我想你的查詢,但FROM關鍵字未找到預期的錯誤出現。你有什麼想法我有什麼錯請>>?非常感謝 – mikespiteri

3

我猜這:

to_char(TRANSACTION_DATE), 'dd/mm/yyyy'), 

應該是這樣的:

to_char(TRANSACTION_DATE, 'dd/mm/yyyy'), 

這:

WHERE TRANSACTION_DATE = 'to_char(" + date + ", 'dd/mm/yyyy')' 

應該是這樣的:

WHERE TRANSACTION_DATE = to_char(date, 'dd/mm/yyyy')' 
+0

我改變了他們,但仍然告訴我sql命令沒有正確結束。我附加我的sql查詢:INSERT INTO FCR.TRANSACTION(TRX_UNIT,TRX_DATE,TRX_USR,TRX_USR_SN,TRANSACTION_CODE,PRODUCT_CODE,CURRENCY_SHORT_DESCRIPTION,AMOUNT_FC,EXCHANGE_RATE,AMOUNT_DC) SELECT SOURCE_SYSTEM_CHANNEL_CODE,to_char(TRANSACTION_DATE,'dd/mm/yyyy'), USER_CODE,USER_TRANSACTION_SERIAL_NUMBER,TRANSACTION_CODE,PROFITS_PRODUCT_CODE,SHORT_DESCRIPTION,SOURCE_AMOUNT_FC,SOURCE_EXCHANGE_RATE,SOURCE_AMOUNT_EUR FROM FCR.ORION_FCR_TRANSACTION WHERE TRANSACTION_DATE = 'TO_CHAR(日期, 'DD/MM/YYYY')' – mikespiteri

+1

爲什麼你身邊「TO_CHAR引號(日期, 'dd/mm/yyyy')'不需要它們 – StevieG

2

格式化後,使它看起來已添加更清楚一),他選擇部分

你有SELECT SOURCE_SYSTEM_CHANNEL_CODE, to_char(TRANSACTION_DATE), 'dd/mm/yyyy'),

我想你已經TRANSACTION_DATE後它可能添加了TO_CHAR一個額外的尾架是

SELECT SOURCE_SYSTEM_CHANNEL_CODE, to_char(TRANSACTION_DATE, 'dd/mm/yyyy'), 

它有助於清楚地格式化代碼,並使用匹配括號中的編輯器。

+2

+1支持與支架匹配的IDE的三個歡呼! – APC