首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ora-00900无效sql语句立即执行

ora-00900无效sql语句立即执行
EN

Stack Overflow用户
提问于 2021-05-18 14:44:39
回答 1查看 399关注 0票数 0

我试图用动态SQL来解决一个任务,但面临一个问题或00900无效的sql语句。

代码语言:javascript
复制
execute immediate 'alter table my_table set interval (NUMTOYMINTERVAL(1, ''MONTH''))';

但是,它在匿名块中工作,将要执行的语句作为字符串处理。

代码语言:javascript
复制
DECLARE
str VARCHAR2 (250) := 'alter table my_table set interval (NUMTOYMINTERVAL(1, ''MONTH''))';
BEGIN
    execute immediate str;
END;

那么,第一种情况的问题是什么呢?它看起来像转义引号,但无法捕捉到这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-18 14:54:54

正如错误说的那样,execute immediate不是一个SQL语句。在一些客户端中有一个execute命令-- SQL*Plus、SQLcl、SQLcl和其他客户机--它是匿名块的简写包装器;但从错误的角度看,您似乎并没有使用其中之一。如果你是,你会得到ORA-06550和PLS-0010:遇到编辑符号"alter .“当期待..。

execute immediatePL/SQL语句。因此,它仅在PL/SQL块中有效。

它在普通SQL中没有任何意义;唯一的execute 在SQL引用中是指目录对象特权。

无论如何,您的alter table没有多大意义,不确定它是否应该是一个update,但如果是的话,它没有说明该将什么设置为该间隔值。也不清楚为什么您需要它是动态的。可能这个理由和实际陈述在简化发布你的问题的过程中丢失了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67588597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档