2013-08-28 155 views
0

我可以運行下面的語句,並得到正確的結果:爲什麼我得到ORA-00936錯誤

select moon_phase_text (sysdate) 
    from dual; 

select date_day3 
    from aday3import t1, 
     aasum_report t2 
where t1.date_day3 = t2.game_date; 

這種說法讓我幾天的列表即22-FEB-03

然而,當我試圖更新表中的字段用下面的語句出現錯誤ORA-00936: missing expression

update aday3import 
    set moon_phase = select moon_phase_ 
        (select date_day3 
         from aday3import t1, 
          aasum_report t2 
         where t1.date_day3 = t2.game_date) 
        from dual; 
+0

你真的在第二個版本中有'moon_phase_'而不是'moon_phase_text'嗎?你不需要在'='之後使用'select'和'from dual'部分,你可以直接在那裏調用函數,但是它似乎與你正在更新的行沒有關係。 –

回答

0

而不是去雙的。嘗試在select語句中連接moon_phase_本身

update aday3import set moon_phase = 
       (select 'moon_phase_'||date_day3 
        from aday3import t1, 
         aasum_report t2 
        where t1.date_day3 = t2.game_date) 
+0

是的,在我的聲明中是moon_phase_text。 Moon_phase_text是一個具有一個參數的函數。該參數是一個日期。表aday3import有兩個字段日期字段和文本字段,這是我想要使用日期字段更新月球的階段。我想使用date_day3字段來確定階段並更新表aday3import中的moon_phase字段。 – DroidWizard

+0

然後試試這個。更新aday3import t1 set moon_phase = moon_phase_text(date_day3)where exists(從aasum_report t2選擇1,其中t1.date_day3 = t2.game_date) –

+0

帶有exists的update語句有效。 – DroidWizard