[转载]SQL Plus 一些使用技巧
Sql*plus的使用
Sql*plus介紹
Sql*plus是oracle提供的一個工具程序,既可以在oracle服務(wù)器使用,也可以在oracle客戶端使用。在windows下分兩種,sqlplus.exe是命令行程序,sqlplusw.exe是窗體程序,通常我們在開始菜單中啟動的是后者,兩者的功能是一致的。
Sql*plus是一個最常用的工具,具有很強的功能,主要有:
1.??????? 數(shù)據(jù)庫的維護(hù),如啟動,關(guān)閉等,這一般在服務(wù)器上操作。
2.??????? 執(zhí)行sql語句執(zhí)行pl/sql。
3.??????? 執(zhí)行sql腳本。
4.??????? 數(shù)據(jù)的導(dǎo)出,報表。
5.??????? 應(yīng)用程序開發(fā)、測試sql/plsql。
6.??????? 生成新的sql腳本。
7.??????? 供應(yīng)用程序調(diào)用,如安裝程序中進(jìn)行腳本的安裝。
2??????? dual表
dual是一張系統(tǒng)表,同時也被定義成了public同義詞。它只有一個字段和一條記錄。該表本身的結(jié)構(gòu)和數(shù)據(jù)沒有什么意義,主要是借助該表進(jìn)行其它操作。如:
select? sysdate? from dual;? --獲取函數(shù)值
select 21+15*3 from dual;? --計算表達(dá)式的值
說明:不要對dual表進(jìn)行ddl與dml操作,只進(jìn)行查詢操作。
3??????? sql*plus使用
3.1??????? 啟動sql*plus
1.??????? 不帶參數(shù)啟動
啟動sqlplusw.exe程序,會彈出登陸框,讓輸入用戶名、密碼和連接字符串,在用戶名中輸入“/nolog”,表示先進(jìn)入sql>提示符,先不連接數(shù)據(jù)庫,下面可以利用connect命令連接數(shù)據(jù)庫。啟動sqlplus.exe程序,會提示輸入用戶名與密碼。如果用戶名輸入
2.??????? 帶參數(shù)啟動
下面列舉一些最常見的方式,還有很多可選參數(shù)。
1)??????? 不連接數(shù)據(jù)庫
sqlplus /nolog
2)??????? 連接數(shù)據(jù)庫
sqlplus username/password
3)??????? 使用net8連接字符串連接數(shù)據(jù)庫
sqlplus username/password@connstr
4)??????? 連接后執(zhí)行filename指定的sql腳本,sql腳本中是sql命令和sql*plus的設(shè)置命令
sqlplus username/password[@connstr] @filename
3.2??????? sql*plus的命令
3.2.1??????? 幫助命令
1.??????? help命令
格式:help 命令名 ,用于知道某個具體命令的幫助信息。
??????? 如:help connect
2.??????? describe命令
用戶查看表的結(jié)構(gòu);獲取函數(shù),存儲過程和包的描述。這是非常有用和常用的一個命令。
如:desc user_tables
說明:在sql*plus中,所有命令都可以用前面的四個字母作為整個命令。
3.2.2??????? 編輯命令
sql*plus會將上一次執(zhí)行過的sql命令(包括sql語句和pl/sql語句,包括一行或多行)保存到緩存區(qū)中,可以對緩存區(qū)中信息進(jìn)行編輯。
編輯后可以通過 “/ ”命令執(zhí)行修改后的緩存區(qū)中的命令,如果不休改,則是執(zhí)行原有命令。
1.??????? list [n] 命令
顯示上一條命令中的第n行,如果不指定n,則顯示上一命令的所有行,這樣當(dāng)前行就是最后一行。其它操作會對當(dāng)前行進(jìn)行操作,所以其它操作需要先執(zhí)行l(wèi)ist命令。
如:
begin
??????? insert into test values(1);
end;
/
list
2.??????? change命令
編輯當(dāng)前行的內(nèi)容,先用list命令指定當(dāng)前行。語法為:
change? /被修改字串/修改后的串
如:
list 2
change /(1)/(20)
3.??????? 增加新行
在第一行插入一行,方法為:輸入0,在0后輸入文本。如:
0 insert into test values(2);
在當(dāng)前行后插入一行,方法為:輸入input(或i),回車,輸入新行,再回車,會提示再輸入新行,如不想輸入,輸入點號,回車。如:
4.??????? 刪除行
del?? --刪除緩存區(qū)當(dāng)前行,執(zhí)行前先用list命令指定當(dāng)前行
del n? 刪除緩存區(qū)指定的行
5.??????? 使用操作系統(tǒng)編輯器編輯命令
在 sql*plus中輸入edit命令,會自動打開系統(tǒng)的缺省的文本編輯器(windows下為notepad),緩存區(qū)中內(nèi)容被裝到文本編輯器中,這時可以對其中的內(nèi)容進(jìn)行編輯(這時sql*plus處于等待狀態(tài)),修改完畢后,保存文件后。被修改的內(nèi)容就會被寫入緩存區(qū)。這對于修改錯誤命令很方便。
6.??????? save命令
格式:save 文件名 [replace | append]
save命令的作用是將緩存區(qū)中內(nèi)容保存到指定文件中。如果指定的文件不存在,將會創(chuàng)建,但如果文件目錄不存在,將會失敗。如果指定文件名的文件已存在,不指定replace或append參數(shù)將會失敗。指定replace表示將覆蓋原文件內(nèi)容,指定append表示將緩存區(qū)內(nèi)容加到文件后。
7.??????? get命令
格式:get 文件名
get命令的作用是將指定文件的內(nèi)容加載到緩存區(qū)中,以供編輯或執(zhí)行。
3.2.3??????? spool命令
sql> spool 文件名
執(zhí)行該命令后,如果指定的文件不存在,則會按指定的文件名創(chuàng)建一個空文本文件,如果目錄不存在,會失敗。如果指定的文件已存在,則文件內(nèi)容將會被清空。
??????? 執(zhí)行上述命令后,此命令后的所有輸出(包括命令、輸出提示信息、錯誤信息等)都會被寫入指定的文件。需要說明的時,并不是每輸出一行信息,就會立即寫入文件,有個緩存過程。
Sql>spool off
上述命令就是停止存儲,將前面所有輸出立即寫入文件。
Sql>spool out
除完成spool off命令的功能外,還打印輸出的信息。
說明:spool off/out命令必須與spool命令一一對應(yīng)。
Spool命令的用途主要有如下:
1)??????? 導(dǎo)出數(shù)據(jù)
2)??????? 記錄腳本的執(zhí)行日志
3)??????? 生成新的sql腳本
3.2.4??????? start/@ 命令
格式:start/@ 腳本文件名
這樣可以將相關(guān)的sql/plsql語句,sql*plus的命令寫在腳本中,從而執(zhí)行。最常用的就是安裝腳本,升級腳本。
如:
sql> start e:test.sql
sql> @e:test.sql
3.2.5??????? 設(shè)置sql*plus環(huán)境(set命令)
可以通過設(shè)置參數(shù)來改變sql*plus的一些屬性,如顯示等。如果運行的是sqlplusw.exe程序,通過菜單“選項|環(huán)境”可以通過界面改變這些參數(shù)的默認(rèn)值。也可在sql>提示符下輸入set命令來改變參數(shù)的值。
查看參數(shù)的當(dāng)前設(shè)置值的命令是:show 參數(shù)名 。? 常見的設(shè)置參數(shù)命令有:
1.??????? set pagesize [n]
用于設(shè)置每頁的行數(shù),范圍為1~ 50000,如果為0,則表示不分頁,不帶n,表示為0。否則,缺省情況下,當(dāng)查詢結(jié)果的行數(shù)超過一頁的行數(shù)時,就會分頁顯示,每頁的開頭會顯示列標(biāo)題信息。
2.??????? set newpage [n]
該命令與pagesize結(jié)合使用,用來設(shè)置每一頁的頂行的空行數(shù),范圍為0~ 999,不帶n,表示為0。缺省值為1。
3.??????? set linesize n
設(shè)置每行能容納的字符數(shù),范圍為1~32767 。在查詢時,通常一條記錄會顯示一行,如果一行顯示不下,則會自動換行。用戶輸入數(shù)據(jù)時,當(dāng)一行輸入的值超過一行的最大值時,也會自動換行。
4.??????? set heading off|on
設(shè)置打開(on)或關(guān)閉(off)查詢結(jié)果頁的頭信息,如列標(biāo)題。比如,想輸出sql語句存儲到文件中時,就需要把這關(guān)閉。如:
select 'insert into test1 values('||id||');' from test;
5.??????? set feedback off|on
設(shè)置為on,當(dāng)執(zhí)行insert,update,pl/sql等操作時,會提示執(zhí)行的結(jié)果。如果設(shè)置為off,則不顯示。
6.??????? set termout off|on
設(shè)置為off,執(zhí)行的信息就不會在屏幕上顯示。需要說明的是,該選項只有在腳本中設(shè)置,執(zhí)行腳本時才有效。
7.??????? set trimspool off|on
設(shè)置為on,查詢結(jié)果輸入到文件中時,對于查詢結(jié)果的后面的空格,將被截掉。
8.??????? set serveroutput off|on
設(shè)置on,在pl/sql中使用dbms_output包輸出調(diào)試信息時sql*plus中可以顯示出來,否則不顯示。缺省為off。關(guān)于dbms_output包的詳細(xì)信息在以后介紹。需要說明的是,該設(shè)置只是在當(dāng)前會話有效,一旦重新連接后,又恢復(fù)為默認(rèn)值。可以在未連接數(shù)據(jù)庫的情況下設(shè)置,設(shè)置后連接后有效,但一旦重新連接就恢復(fù)默認(rèn)值了。 如:
begin
dbms_output.put_line('hello');
end;
9.??????? set timing off|on
設(shè)置為on,每執(zhí)行一sql或pl/sql,都會顯示該執(zhí)行所需要的時間,通過這可以查看sql語句的執(zhí)行效率。
10.??????? set autocommit on|off|n
在sql*plus中,執(zhí)行dml語句后,需要commit后或者執(zhí)行了dcl或ddl語句后才會被提交。本命令可以設(shè)置讓sql*plus自動提交。
??????? 其中on表示每執(zhí)行一sql/plsql,都自動提交一下。而off只是當(dāng)sql*plus退出時才自動提交一下。n表示執(zhí)行n條sql/plsql語句后就自動提交一下。
11.??????? set echo on|off
設(shè)置為on,sql*plus執(zhí)行腳本時,都會將每一條執(zhí)行的sql語句輸出來,這樣如果執(zhí)行出錯,便于定位。缺省為off 。
3.2.6??????? show命令
通過show 參數(shù)名 ,可以看到當(dāng)前sql*plus的一些環(huán)境參數(shù)的設(shè)置。還可以查看其它信息,如:
show user
查看當(dāng)前登陸的用戶
show error
查看sql執(zhí)行出錯的詳細(xì)信息,因為創(chuàng)建pl/sql對象時即使出錯,sql*plus不會報error,只會報warning,而且無法看到詳細(xì)錯務(wù)信息,通過show error就可以看到。
3.2.7??????? column(col)命令
該命令可用于設(shè)置列的顯示屬性,常見格式如:
1.??????? col 列名 format an [truncate]
上面命令用于設(shè)置列的顯示寬度,n為寬度。Truncate表示如果列值寬度超過n時,就截去超長的部分。不加Truncate,如果列值寬度超過n時,換行顯示。
如:col s format a20
比如一個字段定義了varchar2類型,長度很大,但實際字段值寬度很少,如果不加設(shè)置,在sql*plus查詢時,會占用定義的寬度,這樣看起來不方面。
2.??????? 設(shè)置數(shù)字的顯示寬度
create table test(id number);
insert into test values(888888812345678);
SQL> select * from test;
??????? ID
----------
8.8889E+14
SQL> select to_char(id) from test;
TO_CHAR(ID)
----------------------------------------
888888812345678
col id format 999999999999999999999999? --設(shè)置數(shù)字的顯示寬度
SQL> select * from test;
?????????????????????? ID
-------------------------
????????? 888888812345678
3.??????? 清除列的設(shè)置
col 列名 clear??? --清除指定列的格式設(shè)置
clear columns? --清除所有列的格式設(shè)置
3.2.8??????? host命令
通過host命令,可以在sql*plus中執(zhí)行操作系統(tǒng)命令。如:
sql>host mkdir e:temp
3.2.9??????? 退出sql*plus
語法:exit [n]
說明:通過exit命令退出sql*plus,退出可以帶一個錯務(wù)碼。主要是供父進(jìn)程使用。
3.3??????? 執(zhí)行失敗的處理
當(dāng)一個腳本中存在大量的sql/plsql語句時,執(zhí)行該腳本時,如果其中有一條sql語句執(zhí)行失敗,可能很難發(fā)現(xiàn)。如果能讓碰到錯誤時,讓sql*plus退出,再結(jié)合spool命令查看日志,就很容易知道腳本的執(zhí)行情況。這可以通過whenever命令來實現(xiàn)。
格式一:whenever sqlerror exit [success | failure | warning | n] [commit | rollback | none]
說明:一旦腳本中該語句之后的某sql語句執(zhí)行出錯,就會停止出錯,sql*plus就會自動退出。其中success | failure | warning | n 為設(shè)定sql*plus出錯后退出帶出的錯務(wù)碼,success | failure | warning為固定的常量,n為指定任意數(shù)值。如果加了commit選項,則出錯后,sql*plus在退出前,會自動執(zhí)行commit一下;如果加了rollback選項,則出錯后,sql*plus在退出前,會自動執(zhí)行rollback一下;如果加了none選項或什么都不加,則退出不會做任何事,但實際上默認(rèn)設(shè)置下sql*plus在退出前會commit一下,所以這種情況與加了commit選項效果一樣。
例:whenever sqlerror exit sql.sqlcode --保證了出現(xiàn)錯誤,立即退出,并返回錯誤碼
例:***test.sql***
spool e:test.txt
whenever sqlerror exit
select * from test1233;
select * from dual;
spool off
格式二:whenever sqlerror continue [commit | rollback | none]
說明:一旦腳本中該語句之后的某sql語句執(zhí)行出錯,會繼續(xù)往下執(zhí)行,sql*plus不會自動退出,默認(rèn)就是這樣的設(shè)置。如果加了commit選項,則出錯后,執(zhí)行下一條語句前,sql*plus會自動執(zhí)行commit一下;如果加了rollback選項,則出錯后,執(zhí)行下一條語句前,sql*plus會自動執(zhí)行rollback一下;如果什么都沒加或加了none選項,則出錯后,對前面執(zhí)行過的語句不會自動添加執(zhí)行任何commit或rollback語句,是否commit或rollback,看后面的語句。
例:***test.sql***
spool e:test.txt
whenever sqlerror continue
select * from test12;
select * from dual;
spool off
說明:當(dāng)創(chuàng)建一個pl/sql對象時,如存儲過程,函數(shù),觸發(fā)器,包等。即使代碼寫的有問題,在sql*plus執(zhí)行時不會報error,只會報warning。這樣通過whenever sqlerror是無法獲取到的。而且sql*plus不直接給出出錯的詳細(xì)信息,這可以通過show error命令看到出錯的詳細(xì)信息。
3.4??????? 固化對sql*plus的環(huán)境設(shè)置
通過上面的介紹我們可以知道,可以通過命令設(shè)置sql*plus運行環(huán)境參數(shù)。但sql*plus一旦關(guān)閉重新打開,這些參數(shù)又恢復(fù)成默認(rèn)值,又需要重新設(shè)置,這非常不方便。好的是,oracle提供一種方法可以使這些設(shè)置固定下來。
??????? 如果%ORACLE_HOME%sqlplusadmin目錄下有g(shù)login.sql文件(不同的系統(tǒng)目錄和文件名可能不確定),則啟動sql*plus后(如果有初始連接,則連接后),sql*plus會自動執(zhí)行該腳本,這樣就可以在該腳本對sql*plus的參數(shù)進(jìn)行設(shè)置,還可以加上特定的sql/plsql語句。
??????? 可以看出,每次啟動sql*plus,不管是誰啟動,都會執(zhí)行g(shù)login.sql腳本。Oracle同時提供一種機制讓不同的操作系統(tǒng)用戶啟動sql*plus執(zhí)行自己特定的腳本。方法是,在當(dāng)前目錄下(即運行sql*plus程序時的當(dāng)前目錄)編寫一個文件名為login.sql的腳本,將自己特定的設(shè)定寫入文件,這樣啟動sql*plus時首先會執(zhí)行l(wèi)ogin.sql,然后再執(zhí)行公共的glogin.sql。這在windows系統(tǒng)下顯的不是很方面,因為只有在命令行下啟動sql*plus時才有效,且必須先設(shè)置當(dāng)前目錄。而在unix下就非常有用,因為unix下每個登陸用戶都有自己的主目錄,而登陸后當(dāng)前目錄就是主目錄,不同的用戶可以將login.sql文件放在自己的主目錄下。
4??????? 日期類型的顯示
在sql*plus中執(zhí)行:select sysdate from dual; 發(fā)現(xiàn)查詢結(jié)果是以字符串顯示的,但格式不好看。原因是,oracle對日期類型它會自動的按照缺省格式隱式的轉(zhuǎn)換為字符串類型。
可以通過t_char函數(shù)和to_date函數(shù)來實現(xiàn)日期與字符串之間的顯示轉(zhuǎn)轉(zhuǎn)。如:
select to_char(sysdate,’yyyy-mm-dd hh24:mi:ss’) from dual;
create table test(s date);
insert into test values(to_date(‘2005-01-25 10:20:22’,’ yyyy-mm-dd hh24:mi:ss’));
也可以通過執(zhí)行sql命令,來改變當(dāng)前會話的日期格式。如:
alter session set nls_date_format=’ yyyy-mm-dd hh24:mi:ss’;
select sysdate from dual;
insert into test values(‘2005-01-25 10:20:22’);
可以直接將字符串插入到日期類型中,原因是oracle對數(shù)據(jù)類型會做自動隱式的轉(zhuǎn)換。
說明:該設(shè)置只在當(dāng)前會話有效,重新登陸后,又恢復(fù)為默認(rèn)值。
5??????? 腳本中變量
5.1??????? 替換變量
變量前加一個&符號,sql*plus在命令中遇到替換變量時,用真實值去代替,相當(dāng)于c語言中的宏定義。真實值來源于三個地方:
1)??????? 腳本參數(shù)帶入
2)??????? 腳本中直接定義
3)??????? 用戶動態(tài)輸入
如:
select &num from dual;
sql*plus中有幾個環(huán)境參數(shù)將影響替換變量,為:
set define off | c
off表示關(guān)閉替換變量功能。c為定義替換字符(缺省為&),同時啟用替換變量功能。
set escape off | c
定義轉(zhuǎn)義字符。即&前面如果有指定的c字符,則作為普通字符處理。默認(rèn)是off,即沒有定義轉(zhuǎn)義字符。如:
set escape
select ‘&hello’ from dual;
set ver off|on
如果為on,在替換前后會列出命令文件的每一行,缺省為on。
set concat c
設(shè)置替換變量與其后的其它字符的分隔符,缺省為句點(.)。如:
select ‘&hello.good’ from dual; -- 句點不作為輸出的一部分
等價于:select? ‘&hello’||’good’ from dual;
select ‘&hello good’ from dual; --空格也起到分隔作用,單空格作為輸出的一部分
select? ‘&hello’||’.good’ from dual;
5.1.1??????? 腳本帶參數(shù)
腳本可以帶參數(shù),在腳本中通過&n來引用參數(shù),n為1表示為第一個參數(shù),2表示第二個參數(shù),依次類推。如:
set ver off;
connect omc/&1
insert into test values(&2);
commit;
執(zhí)行該腳本的方法是:sql>@e:test.sql omc self 45
如果參數(shù)是字符串,且字符串有空格,應(yīng)該用雙引號或單引號擴(kuò)起,如果字符串中有雙引號,則只能用單引號擴(kuò)起,如果字符串中要輸入單引號,則只能用雙引號擴(kuò)起,且輸入兩個單引號才代表一個單引號。如:
set ver off;
connect omc/&1@&2
create table test(s varchar2(20));
insert into test values('&3');
commit;
執(zhí)行:
sql>@e:test.sql omc self? hello
sql>@e:test.sql omc self? “hello world”
sql>@e:test.sql omc self? hello world’
sql>@e:test.sql omc self? “hello ‘’zte’’world”
sql>@e:test.sql omc self? ‘hello “zte” world’
正常情況下,slq*plus執(zhí)行時,碰到&符號,就會作為參數(shù)來處理,如果&符號后跟的是數(shù)字,就會從命令行中取相應(yīng)的值替換&n,如果找不到,如n為3,但執(zhí)行時只帶了2個參數(shù),sql*plus就會在屏幕上提示輸入?yún)?shù)。如果&后跟的不是數(shù)字,而是其它字符,則sql*plus會把&及其后的字符串(截止到空格為止)當(dāng)作一個參數(shù)提示輸入。
如:
select ‘hello&good china’ from dual;
那么如何將&作為普通字符處理呢?除了前面介紹的定義escape環(huán)境參數(shù)外,另一方法是,&符號后緊跟單引號(之間可以跟空格)。如:
select ‘hello&’||’good china’ from dual;
select ‘hello&? ’||’good china’ from dual;
所以,一般情況下在sql*plus下,執(zhí)行sql語句時或腳本時,對&字符需要特殊處理一下,因為它是sql*plus中的特殊字符。
5.1.2??????? 腳本中定義
格式:define 標(biāo)識符 = 值
如:
define n=12
define s=’hello’ --是否加引號沒有關(guān)系
通過加&引用,如:
select &n from dual;
select ‘&s’ from dual; --注意必須要加引號
begin
dbms_output.put_line('&s');
end;
取消定義的方法是:undefine標(biāo)識符
一旦取消定義后,如果在通過&引用,則sql*plus會提示輸入。
5.1.3??????? 接收用戶交互式輸入
很多時候,在執(zhí)行腳本時,我們希望有些信息根據(jù)腳本的提示,讓用戶動態(tài)輸入,從而在下面的sql語句中使用。
語法為:accept var_name typename prompt ‘hint’ [hide]
??????? 說明:hide表示以密文方式讓用戶輸入。typename只能是char,number,date三種。
如:
accept user_name char prompt ‘please input username:’
accept passwd char prompt ‘please input password:’ hide
通過變量前加&引用:connect &user_name/&passwd
5.2??????? 捆綁變量
一般情況下,我們都是在pl/slq中定義變量,如:
delclare
??????? s varchar2(10);
begin
??????? s:=’hello’;
??????? insert into test values(s);
end;
上面的程序段中,定義了變量s,但它只在該程序段有效。那如何定義在整個sql*plus中都有效的變量(這里稱為捆綁變量)呢?方法如:
var g_str varchar2(10)
begin --賦值只能在pl/sql中進(jìn)行
:g_str:='hello'; --注意前面要加冒號
end;
select :g_str from dual; --引用捆綁變量,注意前面要加冒號
print g_str? --顯示捆綁變量,注意前面不要加冒號
declare --在pl/sql中引用捆綁變量
s varchar2(10);
begin
dbms_output.put_line(:g_str);
s:=:g_str;
dbms_output.put_line(s);
insert into test values(:g_str);
end;
6??????? 腳本例子
6.1??????? 生成表的備份腳本
編寫存儲過程,該存儲過程生成一個select語句,執(zhí)行結(jié)果為輸出指定表的所有記錄的insert語句。
create or replace function BuildSelSql(tablename in varchar2) return varchar2 is
? cursor cur(tabname varchar2) is
?? select column_name,data_type from user_tab_columns where table_name=upper(tabname) order by COLUMN_ID;
? tmp varchar2(4000);
? msg varchar2(4000);
? len number;
? num number;
begin
? tmp:='select ''insert into '||tablename||' values(''';
? for re in cur(tablename) loop
??? if re.data_type='CHAR' or re.data_type='DATE' or re.data_type='VARCHAR2'
????? or re.data_type='RAW' then
????? tmp:=tmp||'|'||'|''''''''';
????? tmp:=tmp||'|'||'|'||re.column_name||'|'||'|'||''''''',''';
??? else
????? --tmp:=tmp||'|'||'|'||'decode('||re.column_name||',null,''null'','||re.column_name||')'||'|'||'|'||''',''';
????? tmp:=tmp||'|'||'|'||'nvl('||re.column_name||',0)'||'|'||'|'||''',''';
??? end if;
? end loop;
?
? len:=length(tmp);
? msg:=substr(tmp,1,len-3);
?
? msg:=msg||''');'' from '||tablename ||';';
? return msg;
end;
執(zhí)行函數(shù)例子:
select BuildSelSql('test') from dual; --test為表名
set trimout on
set trimspool on
set heading off
set feedback off
set termout off
set ver off
set linesize 4000
set pagesize 0
whenever sqlerror exit
set serveroutput on
spool e:test1.sql
select BuildSelSql('test') from dual;
spool off
set pagesize 6
btitle left 'commit;' --分批提交
spool e:test.txt
? start e:test1.sql
spool off
執(zhí)行:
??????? sql>@e:test.sql
執(zhí)行后查看e:test.txt文件的內(nèi)容。
?
轉(zhuǎn)載于:https://www.cnblogs.com/songzhenhua/archive/2012/08/13/9312846.html
總結(jié)
以上是生活随笔為你收集整理的[转载]SQL Plus 一些使用技巧的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: POJ 2421 Constructin
- 下一篇: 1分钟教你看输卵管造影检查片子?