查询sql脚本生成的表

ukdjmx9f  于 2021-07-27  发布在  Java
关注(0)|答案(2)|浏览(522)

假设我有一个名为c:\test.sql的sql脚本,其内容如下:;

  1. select * from sales group by order_id;

我希望能够在另一个查询中使用该脚本。
例如:

  1. select * from (c:\\test.sql) where rownum <= 100;

请注意,我已经尝试了@和@运算符。而且不能通过简单的示例完成任务,因为这些操作符单独执行脚本,并且不能应用我需要的嵌套查询,而不是嵌套脚本。
我也不想在数据库中创建任何对象作为中间表和视图。
这有可能吗?
我使用的是exaplus版本6.0.5,它有自己的@版本,而不是sql*plus。

xqkwcwgp

xqkwcwgp1#

首先,你需要移除 ; 从包含查询的脚本中,需要简单的脚本:

  1. Select *
  2. From (
  3. @your_script
  4. )
  5. WHERE rownum <100;

顺便说一句,我经常在sql*plus、sqlcl或sqldeveloper中对高级脚本使用@/@:http://orasql.org/2013/03/29/sqlplus-tips-1/
http://orasql.org/2013/04/17/sqlplus-tips-4-branching-execution/
例如,您还可以使用相同的方法读取脚本内容:
正在将tmp.sql读入替换变量sfile:
tmp.sql:

  1. select 123,456 from dual

例子:

  1. col sfile new_value sfile noprint
  2. select q'[
  3. @tmp.sql
  4. ]' sfile from dual;
  5. prompt &sfile

结果:

  1. SQL> prompt &sfile
  2. select 123,456 from dual
展开查看全部
kfgdxczn

kfgdxczn2#

您可以使用一个内嵌视图重写查询,如下所示。
它不会创建任何中间视图对象

  1. select *
  2. from (select order_id
  3. from sales
  4. group by order_id
  5. )
  6. where rownum <= 100;

相关问题