如何從sqlplus中的表中選擇我的spool文件名?如何從sqlplus中的表中選擇spool的文件名
我有類似:
SPOOL ON
SPOOL XXXXXXXXX.bkp
SELECT * FROM my_table WHERE field1='value';
SPOOL OFF
,並希望XXXXXXXXX.bkp有場從同一表中的值。
問候, 費爾南多
如何從sqlplus中的表中選擇我的spool文件名?如何從sqlplus中的表中選擇spool的文件名
我有類似:
SPOOL ON
SPOOL XXXXXXXXX.bkp
SELECT * FROM my_table WHERE field1='value';
SPOOL OFF
,並希望XXXXXXXXX.bkp有場從同一表中的值。
問候, 費爾南多
可以使用SQLPLUS「NEW_VALUE」功能來將列值保存到一個SQLPLUS變量,然後如下面卷軸它。
SQL> create table spool_file (
2 id number,
3 file_name varchar2(200)
4 );
Table created.
SQL> insert into spool_file values (1, 'test_spool_123.txt');
1 row created.
SQL> commit;
Commit complete.
SQL> column file_name new_value file_name;
SQL> select file_name from spool_file
2 where id = 1;
FILE_NAME
--------------------------------------------------------------------------------
test_spool_123.txt
SQL> spool '&file_name';
SQL> select object_id from dba_objects
2 where rownum < 10;
OBJECT_ID
----------
28
49
11
6
3
52
40
19
59
9 rows selected.
SQL> spool off;
這裏是我的假脫機文件中的內容。
SQL> select object_id from dba_objects
2 where rownum < 10;
OBJECT_ID
----------
28
49
11
6
3
52
40
19
59
9 rows selected.
SQL> spool off;
你也可能想看看UTL_FILE包及其子程序,如果您需要在您的文字文件更大的控制權。
我不是100%肯定,你想要做什麼,但如果你想在你的後臺打印文件的變量名,你可以這樣做:
col dat1 NEW_VALUE v_start_time
select to_char(sysdate,'YYYY-MM-DD_HH24MISS') dat1 from dual;
spool test_script_&v_start_time..txt
/*
other stuff...
*/
spool off
這是從一個腳本例子節選我已經添加了一個時間戳到文件名,使多個輸出文件更容易管理。請注意0命令中的..
。
既然你說你想要一個實際的字段名稱在文件名中,你將不得不改變我的查詢,以查詢對存儲所有字段名稱的Oracle表(我現在不記得它的名字)的查詢,但這應該很容易。
這個例子中的值XXXXXXXXX是什麼? – FrustratedWithFormsDesigner 2011-02-16 21:12:59
這是來自my_table的varchar2字段 – 2011-02-16 21:15:21