**背景:**客戶提出一個需求,寫SQL腳本的時候,內容是拼接的,如何將這個拼接SQL執行的結果取出來調用執行呢? 我想到的方案是先把結果取出來,存爲一箇中間文件,再調用該文件便可。 **知識點:**如何將sqlplus結果中的無關信息都去掉? 可使用sqlplus -s進入調用拼接SQL腳本,腳本中配合使用set設定相關屬性便可實現。下面舉一個簡單的示例來講明:sql
<h1 id="1">1.拼接SQL腳本</h1> 我這裏拿拼接一個殺掉業務用戶JINGYU的全部會話舉例:session
[oracle@db10 ~]$ cat test.sql --format set heading off set echo off set flush off set feedback off set pagesize 9999 set linesize 9999 set long 9999 --SQL --kill_all_session select 'alter system disconnect session '''||sid||','||serial#||''''||' immediate;' from v$session where username = 'JINGYU'; --exit exit
<h1 id="2">2.生成中間文件</h1> 調用上面的拼接SQL腳本,生成中間文件exec.sql:oracle
[oracle@db10 ~]$ sqlplus -s / as sysdba @test.sql > exec.sql
此時查看生成的sql文件,能夠確認沒有其餘內容,知足直接後期調用執行的要求:code
[oracle@db10 ~]$ cat exec.sql alter system disconnect session '148,48' immediate; alter system disconnect session '159,83' immediate;
<h1 id="3">3.調用中間文件</h1> 我這裏直接執行調用中間文件驗證,根據你的需求也能夠將其封裝到另外一個腳本中。orm
[oracle@db10 ~]$ sqlplus / as sysdba SQL*Plus: Release 10.2.0.4.0 - Production on Tue Jul 17 12:01:12 2018 Copyright (c) 1982, 2007, Oracle. All Rights Reserved. Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit Production With the Partitioning, OLAP, Data Mining and Real Application Testing options SYS@orcl> @exec System altered. System altered. SYS@orcl>