2013-08-28 125 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