sqlplus和pl/sql developer对sql 的解析还不一样..

merge into card f using ( select e.card_status,e.issue_date,c.id id,e.card_no card_no,e.maincard_flag maincard_flag,e.new_flag new_flag,e.suspend_times suspend_times from etl_custcard e,customer c where e.new_flag='1' And e.sys_date='20070904' and e.cust_no=c.id_no ) b on (f.card_number=b.card_no) when matched then update set CUSTOMER_ID =b.id, MAINCARD_FLAG =b.maincard_flag, NEW_FLAG =b.new_flag, SUSPEND_TIMES = nvl(b.suspend_times,0),f.state=b.card_status,f.open_date=b.issue_date when not matched then insert ( ID, CARD_LIMIT,MONTHLY_PAY,LIMIT_USE_PECENT_HY,TIMES_HY,AMOUNT_HY,CORRECT_AMOUNT_HY,CORRECT_PERCENT_HY,DAILY_BALANCE_HY,LIMIT_USE_PECENT_Y, TIMES_Y,AMOUNT_Y,CORRECT_AMOUNT_Y,CORRECT_PERCENT_Y,DAILY_BALANCE_Y ,DISTRUSTFUL_AMOUNT,DISTRUSTFUL_TIMES,OWE_TIMES,ACCOUNT_LIMIT, OWE_AMOUNT, CUSTOMER_ID,CARD_NUMBER,MAINCARD_FLAG,NEW_FLAG,SUSPEND_TIMES,record_date,state,open_date ) values( hibernate_sequence.nextval,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0, 0, b.id,b.card_no, b.maincard_flag,b.new_flag,nvl(b.suspend_times,0),sysdate,b.card_status,b.issue_date );

这条语句在pl/sql dev中执行没有问题
但是 用shell 调用sqlplus 却报错说:
SQL> 2 ag,nvl(b.suspend_times,0),sysdate,b.card_status,b.issue_date )
*
ERROR at line 2:
ORA-00917: missing comma

折腾良久 发现:select e.card_status,e.issue_date,c.id id ...
前面两个字段没有加别名。加上别名就好了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值