SQL 语句 命令未正确结束,求原因!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 语句 命令未正确结束,求原因!相关的知识,希望对你有一定的参考价值。

原始语句:

select 表A.序号
sum(表B.金额) as "六月金额"
sum(表B.税额) as"六月税额"
sum(表C.金额) as"七月金额"
sum(表C.税额) as"七月税额"

from 表A,表B,表C
where 表B.序号=表A.序号
表C.序号=表A.序号
表A.序号=&&asxh

问题1:
where 下的&&asxh为用户输入的查询序号,然而运行的时候提示“命令未正确结束”。
假如将 “表A.序号=&&asxh” 换成如"表A.序号='006215' " 这种特定句子则反馈正常。

问题2:
更改输入日期的格式"where 表A.日期 >= to_date('&&asdate','yyyy-mm-dd')"
这样写有问题吗?
group by 表A.序号
这句原始语句是有的,在结尾

select 表A.序号
sum(表B.金额) as "六月金额",
sum(表B.税额) as"六月税额",
sum(表C.金额) as"七月金额",
sum(表C.税额) as"七月税额"
貌似缺少逗号了 。。追问

原始语句也有的……忘记打上了

参考技术A 你这个明显是因为没有group by 语句啊追问

原始语句有的在最后 group by 表A.序号

追答

表A.序号=&&asxh 你个个语句就将 &&asxh 当成一个列名来解析
表A.序号='006215' 就是当'006215' 是一个字符串啊,所以就没事了

追问

&&asxh 是已经设定的字符输入参数, 也不用改成'&&asxh' 那么究竟是啥问题····

追答

这个是程序拼的语句还是直接从数据库执行的啊?如果是程序拼的,就需要加单引号,如果是数据库参数,那就看你的参数有没有定义好了。可以单独吧它select出来看下

本回答被提问者采纳

ORA-00933: SQL 命令未正确结束 00933. 00000 - “SQL 命令未正确结束

【中文标题】ORA-00933: SQL 命令未正确结束 00933. 00000 - “SQL 命令未正确结束【英文标题】:ORA-00933: SQL command not properly ended 00933. 00000 - "SQL command not properly ended 【发布时间】:2019-11-10 19:46:31 【问题描述】:
Select S.sname
From    suppliers s
where not exists (
(select * from parts p where p.color = 'red')  ; all red parts
except
(select c.pid from catalog c, parts p where c.sid = s.sid
and c.pid = p.pid and p.color = 'red'))


select  p.pname
from    parts p. catalog c, suppliers s
where   p.pid = c.pid and c.sid = s.sid
AND s.sname = 'S1'

AND not exists (  # another supplier
select * from catalog c1, suppliers s1
where p.pid = c1.pid and c1.sid = s1.sid
AND s1.sname <> 'S1')

当我执行上述两个查询时,它显示 SQL 命令未正确结束

【问题讨论】:

你需要用; 终止每条语句(加上嵌入的; all red parts 和`#另一个供应商`也是错误的 Oracle 的 SQL 中没有例外。注释掉由两个破折号(--)执行,仅一行,/* */ 执行多行,但不是#; 【参考方案1】:

可能是因为它们无效;那些是什么

; all red parts except# another supplier

应该怎么做?评论,也许?在 Oracle 中,您可以使用 -- 或将 cmets 包含在 /* ... */ 中。

这可能更好一些:

第一个查询:

Select S.sname 
From suppliers s 
where not exists ( (select * 
                    from parts p 
                    where p.color = 'red'
                   ) 
                    minus 
                   (select c.pid 
                    from catalog c, parts p 
                    where c.sid = s.sid 
                      and c.pid = p.pid 
                      and p.color = 'red'
                   )
                 );

第二次查询:

select p.pname 
from parts p, catalog c, suppliers s 
where p.pid = c.pid 
  and c.sid = s.sid 
  AND s.sname = 'S1'
  AND not exists (select * 
                   from catalog c1, suppliers s1 
                   where p.pid = c1.pid 
                     and c1.sid = s1.sid 
                     AND s1.sname <> 'S1'
                 );                 

【讨论】:

以上是关于SQL 语句 命令未正确结束,求原因!的主要内容,如果未能解决你的问题,请参考以下文章

SQL命令未正确结束是啥意思

oracledelete关联删除sql命令未正确结束

SQL 命令未在更新语句中正确结束 [重复]

我拼接了一个sql,在数据库中sql语句可正确运行,但在java代码中报错,sql命令未正确结束。

mybatis 中用insert into select ..... 报错命令未正确结束,但把这句sql放到plsql中执行正常

ORACLE:错误错误(6,3):PL/SQL:SQL 语句被忽略和错误(8,3):PL/SQL:ORA-00933:SQL 命令未在过程中正确结束