oracle 第 1 行的错误:ORA-00933:SQL 命令未正确结束

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/17695990/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-19 01:47:41  来源:igfitidea点击:

ERROR at line 1: ORA-00933: SQL command not properly ended

sqloracleora-00933

提问by asmae

i'm working on a request ,and i think i missed a clause because i having this error ERROR at line 1: ORA-00933: SQL command not properly ended

我正在处理一个请求,我想我错过了一个子句,因为我在第 1 行遇到此错误 ERROR:ORA-00933:SQL 命令未正确结束

the request :

请求:

echo "update account_balances_t set credit_limit='51200' inner join account_t on account_t.poid_id0=account_balances_t.obj_id0  where access_code1 in (SELECT DISTINCT ACCESS_CODE1,REC_ID FROM  ACCOUNT_T A, ACCOUNT_PRODUCTS_T AP WHERE A.STATUS != 10103  AND A.ACCESS_CODE1 IS NOT NULL AND A.POID_ID0 = AP.OBJ_ID0 AND AP.PRODUCT_OBJ_ID0 = (SELECT POID_ID0 FROM PRODUCT_T WHERE NAME = 'IEW - Europe Daily Plan 1')); "|sqlplus -s `whoami`/`whoami`@$ORACLE_SID

the error :

错误 :

SELECT DISTINCT ACCESS_CODE1,REC_ID FROM  ACCOUNT_T A, ACCOUNT_PRODUCTS_T AP WHERE A.STATUS != 10103  AND A.ACCESS_CODE1 IS NOT NULL AND A.POID_ID0 = AP.OBJ_ID0 AND AP.PRODUCT_OBJ_ID0 = (SELECT POID_ID0 FROM PRODUCT_T WHERE NAME = 'IEW - Europe Daily Plan 1'))
                                                                                                                                                                                                                                                                   *
ERROR at line 1:
ORA-00933: SQL command not properly ended

回答by álvaro González

You basically have this:

你基本上有这个:

UPDATE account_balances_t
SET credit_limit='51200'
INNER JOIN account_t ON account_t.poid_id0=account_balances_t.obj_id0
WHERE access_code1 IN (...);

I can't find anything similar among the available syntax variations for UPDATE.

我无法找到中类似的事情了可用的语法变化UPDATE

Also, you're attempting to match column access_code1with a subquery that returns twocolumns.

此外,您试图将列access_code1与返回列的子查询进行匹配。

回答by krokodilko

update account__balances_t set credit_limit='51200' inner joinaccount_t on .....

更新 account__balances_t set credit_limit='51200'内连接account_t on .....

Syntax is bad - oracle doesn't support 'inner join' here. Correct syntax is:

语法不好 - oracle 不支持这里的“内连接”。正确的语法是:

UPDATE table SET colum=expression [,column = expression ... ]
WHERE condition<br>

Read here: http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_10007.htm

在这里阅读:http: //docs.oracle.com/cd/B19306_01/server.102/b14200/statements_10007.htm

回答by jiojioo

UPDATE PEOPLE a
SET a.SURNAME = (
    select b.SURNAME
    from PEOPLE b
    where b.NI.NO = a.NI_NUMBER
)