当前位置: 首页 > 知识库问答 >
问题:

ORA-00900 on delete语句

唐健
2023-03-14

我试图使用DELETE FROMIN子句以及子查询来删除另一个表上的查询所给出的行,该表与我要删除的表是1比1,但Oracle 11g2向我抛出了一个完全没有帮助的ORA-00900错误,如下面的SQL fiddle:

http://sqlfiddle.com/#!4/93171/1

对于那些无法使用SQLFIDLE的用户,我使用的模式/初始负载是(我使用varchar而不是varchar2来实现测试可移植性,“野生”数据使用varchar2):

create table obj (id integer primary key, data varchar(100));
create table meta(id integer primary key, imported char(1));

insert into obj (id, data) values (1, 'foo');
insert into obj (id, data) values (2, 'bar');
insert into obj (id, data) values (3, 'baz');
insert into obj (id, data) values (4, 'blurf');
insert into obj (id, data) values (5, 'hurf');
insert into meta (id, imported) values (1, 'T');
insert into meta (id, imported) values (2, 'F');
insert into meta (id, imported) values (3, 'T');
insert into meta (id, imported) values (4, 'F');
insert into meta (id, imported) values (5, 'F');

我想说的是:

delete from obj where obj.id in (select meta.id from meta where meta.imported = 'F');
select * from obj full outer join meta on obj.id = meta.id;

select…full outer join自动运行,如果我仍然注释掉它,错误仍然会发生,因此它不是ORA-00900的来源。)

注意:这句话也是有效的SQL——SQL Server 2014和PostgreSQL 9.3都没有小提琴的问题,而且只要将完全外部联接切换为内部联接,它也可以在SQLite 3.8.8.3的本地副本中工作。

共有2个答案

凌宏大
2023-03-14

这确实是SQLFiddle中的一个问题——当我对我正在使用的实际数据库运行这种形式的删除语句时,ORA-00900不会发生。

为什么关于页面没有更清楚地记录这一点,我不知道...

云弘壮
2023-03-14

也许您需要在union中使用left join,方法是反转表并只取null值

select * from obj left join meta on obj.id = meta.id 
union all
select * from meta left join obj  on obj.id = meta.id 
where obj.id is null 
 类似资料:
  • 我正在使用Oracle ODBC驱动程序,希望动态传递变量。我的查询是这样的: 虽然这个查询在OracleSQLDeveloper中运行良好,但我认为我没有为ODBC驱动程序正确执行编写查询。有什么建议吗? 从ODBC日志: 退出SQLExecDirectW,返回代码为-1(SQL_错误)“define val='Test';\a从Name='Test'所在的表中选择*

  • 我做了一些研究,有一个建议可以使用双重 但是现在我得到了ORA-06502/ORA-06512错误: ORA-06502:PL/SQL:erreur numérique ou erreur sur une valeur ORA-06512:àsys.xmltype“,ligne 272 ORA-06512:àligne 1 06502。00000-“PL/SQL:数值或值错误%s” *原因:出现算

  • 我使用格式插入日期的查询,但我不断得到相同的错误,即。查看oracle文档,我似乎是正确的,这是令人困惑的。希望得到一组额外的眼睛。 和

  • 问题内容: 我创建了一个触发器,如下所示: 我正在尝试在Trigger_1中插入一行 它给了我错误: 谁能帮忙吗? 问题答案: 只需删除 从触发代码。在正在进行的事务中触发执行,因此您无法进行单独的提交。提交事务后,您在trigger_2中的插入也将提交。

  • 问题内容: 1.在将row_val变量char值’Good’更新到表中时,得到无效的标识符错误2.在插入数字时,它工作正常,但字符串却出现错误3。 错误 ORA-00904:“良好”:标识符无效ORA-06512:在第43行ORA-06512:在“ SYS.DBMS_SQL”在第1721行 我想将此’good,son,r ,, happy’字符串中的每个单词插入一行中的单独列中 问题答案: 字符串