如何根据输入从单个SQL文件中对file1或file2进行假脱机?

时间:2017-09-14 17:00:47

标签: oracle sqlplus

我有一个类似以下的SQL文件:

SET ECHO OFF
set feed off
set verify off
set head off
set pagesize 0
set space 0
set trimspool on
set line 250
spool subir.rpt

select 'Subir' from dual;
spool off

SET ECHO OFF
set feed off
set verify off
set head off
set pagesize 0
set space 0
set trimspool on
set line 250
spool vishal.rpt

select 'vishal' from dual;
spool off

让我们调用这个文件spool.sql。我需要根据输入的spool.sql文件接收启用创建假脱机文件。例如,如果它收到" subir.rpt"应运行SQL文件的第一部分,并生成subir.rpt;如果是vishal.rpt,第二部分应该运行,vishal.rpt应该生成。

如何实现这一目标?

编辑:从shell脚本调用此SQL文件。 shellcript如下所示:

sqlplus -s dbread$HOST_CONNECT_STR/dbread<<endplus
@spool.sql
endplus

2 个答案:

答案 0 :(得分:0)

什么是启动此spool.sql?一个shell脚本?数据库功能?

如果它是一个shell脚本,我会使用一个参数到这个脚本或将其拆分为两个单独的.sql文件并调用适当的。

您还可以在调用此脚本之前将文件值保存到临时表中,并在假脱机文件之前选择它。

有很多选项,但这一切都取决于你如何调用这个脚本以及你希望它是多么可扩展。

答案 1 :(得分:0)

最简单的方法是将提供的参数动态地用作后台文件:

$urlRouterProvider.otherwise('/');  
$stateProvider
  .state('login',
  {
    url: "/login",
    templateUrl: "scripts/features/account/views/login.html"
  })

set echo off set feed off set verify off set head off set pagesize 0 set space 0 set trimspool on set line 250 spool &1 spool select 'Subir' from dual where '&1' = 'Subir.rpt'; select 'vishal' from dual where '&1' = 'vishal.rpt'; spool off 命令本身只是为了演示目的而打印当前的假脱机文件名。)