sql - 在 Oracle 查询中设置 FMTONLY ON

标签 sql oracle sqlplus

我想知道 SET FMTONLY ON 是否可以在 Oracle 查询中使用。当我这样使用时:

SET FMTONLY ON select * from department

我收到这样的消息:

Line 1: SQLPLUS Command Skipped: SET FMTONLY ON select * from department

我正在 Oracle 中寻找这样的语句

仅向客户端返回元数据以测试响应的格式,而无需实际运行查询。

编辑

谢谢......我想要所有类型的查询通用的东西,如果查询包含任何“排序依据”,那么我们无法添加它。如果它是一个插入查询,它应该只验证查询,现在我正在做回滚以验证查询(然后在运行时执行它)SET FMTONLY 帮助我在 SQL 中实现它,在 Oracle 中类似? ??.

并且“CREATE TABLE FormatTest AS (SELECT ...),然后执行 DESCRIBE FormatTest。”我没收到这个:(

感谢任何帮助。

最佳答案

根据this设置 FMTONLY 打开:

Returns only metadata to the client. Can be used to test the format of the response without actually running the query.

No rows are processed or sent to the client because of the request when SET FMTONLY is turned ON.

因此,我猜测结果是:(a) 语句成功,但什么也没有发生;或 (b) 语句失败,并引发异常。

因此,您可以通过运行 EXPLAIN PLAN FOR xxx 在 Oracle 中实现类似的效果,例如:

SQL> EXPLAIN PLAN FOR insert into baddml values (1);
explain plan for INSERT INTO baddml VALUES (1)
                             *
ERROR at line 1:
ORA-00942: table or view does not exist

如果语句成功,则可以假定该语句在语法上有效。

关于sql - 在 Oracle 查询中设置 FMTONLY ON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4143336/

相关文章:

MySQL 结果集到数组以便在 WHERE 子句中使用

c# - SQL Server 使用表中的一些数据生成数据

sql - Oracle 和 group by 的奇怪行为

linux - oracle执行sqlplus时报错: "SP2-1503: Unable to initialize Oracle call interface"

python - 如何同时查询多个表?

oracle - 太多的声明

具有最小值和最大值的 SQL 组

shell - sqlplus 中的 -s 选项是做什么用的?

sql - 监控长时间运行的 PL/SQL block

mysql - 如何从同一个表中的父子订单的 mysql 订单中获取记录