SQLPlus命令詳細(xì)說明 2011_第1頁
SQLPlus命令詳細(xì)說明 2011_第2頁
SQLPlus命令詳細(xì)說明 2011_第3頁
SQLPlus命令詳細(xì)說明 2011_第4頁
SQLPlus命令詳細(xì)說明 2011_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、SQLPlus命令詳細(xì)說明 2011-10-19 17:23:01 分類: Oracle1. 執(zhí)行一個(gè)SQL腳本文件 SQL>start file_name SQL> file_name 2. 對(duì)當(dāng)前的輸入進(jìn)行編輯 SQL>edit   3. 重新運(yùn)行上一次運(yùn)行的sql語句 SQL>/   4. 將顯示的內(nèi)容輸出到指定文件 SQL> SPOOL file_name    在屏幕上的所有內(nèi)容都包含在該文件中,包括你輸入的sql語句。   5. 關(guān)閉spool輸出 SQL> SPOOL OFF 

2、0;  只有關(guān)閉spool輸出,才會(huì)在輸出文件中看到輸出的內(nèi)容。   6顯示一個(gè)表的結(jié)構(gòu) SQL> desc table_name   7. COL命令: 主要格式化列的顯示形式。 該命令有許多選項(xiàng),具體如下: COLUMN column|expr option . Option選項(xiàng)可以是如下的子句: ALIAS alias CLEAR FOLD_AFTER FOLD_BEFORE FORMAT format HEADING text JUSTIFY LEFT|CENTER|CENTRE|RIGHT LIKE expr|alias NEWLINE NEW_V

3、ALUE variable NOPRINT|PRINT NULL text OLD_VALUE variable ON|OFF WRAPPED|WORD_WRAPPED|TRUNCATED   1). 改變?nèi)笔〉牧袠?biāo)題 COLUMN column_name HEADING column_heading For example: Sql>select * from dept;      DEPTNO DNAME           

4、             LOC - - -          10 ACCOUNTING                   NEW YORK sql>col  LOC heading location

5、 sql>select * from dept;     DEPTNO DNAME                        location - - -         10 ACCOUNTING     &

6、#160;             NEW YORK   2). 將列名ENAME改為新列名EMPLOYEE NAME并將新列名放在兩行上: Sql>select * from emp Department  name           Salary - - -        &#

7、160; 10 aaa                11         SQL> COLUMN ENAME HEADING Employee|Name Sql>select * from emp             Employee Dep

8、artment  name           Salary - - -           10 aaa                11 note: the col heading turn into two lines from one li

9、ne.   3). 改變列的顯示長(zhǎng)度: FORMAT format Sql>select empno,ename,job from emp;       EMPNO ENAME      JOB        - -     -        7369 SMITH    &

10、#160; CLERK             7499 ALLEN      SALESMAN   7521 WARD       SALESMAN   Sql> col ename format a40       EMPNO ENAME   

11、60;                                JOB -   -         -        736

12、9 SMITH                                    CLERK        7499 ALLEN     

13、;                               SALESMAN        7521 WARD          

14、60;                         SALESMAN   4). 設(shè)置列標(biāo)題的對(duì)齊方式 JUSTIFY LEFT|CENTER|CENTRE|RIGHT SQL> col ename justify center SQL> /       EMPNO 

15、60;         ENAME                   JOB -   -       -        7369 SMITH     

16、;                               CLERK        7499 ALLEN           

17、;                         SALESMAN 7521 WARD                      

18、0;              SALESMAN 對(duì)于NUMBER型的列,列標(biāo)題缺省在右邊,其它類型的列標(biāo)題缺省在左邊   5). 不讓一個(gè)列顯示在屏幕上 NOPRINT|PRINT SQL> col job noprint SQL> /       EMPNO           ENAME -

19、     -        7369 SMITH        7499 ALLEN 7521 WARD   6). 格式化NUMBER類型列的顯示: SQL> COLUMN SAL FORMAT $99,990 SQL> / Employee Department Name        Salary    Com

20、mission - - - - 30          ALLEN        $1,600    300   7). 顯示列值時(shí),如果列值為NULL值,用text值代替NULL值 COMM NULL text SQL>COL COMM NULL text   8). 設(shè)置一個(gè)列的回繞方式 WRAPPED|WORD_WRAPPED|TRUNCATED   &#

21、160;     COL1 - HOW ARE YOU?   SQL>COL COL1 FORMAT A5 SQL>COL COL1 WRAPPED COL1 - HOW A RE YO U?   SQL> COL COL1 WORD_WRAPPED COL1 - HOW ARE YOU?   SQL> COL COL1 WORD_WRAPPED COL1 - HOW A   9). 顯示列的當(dāng)前的顯示屬性值 SQL> COLUMN column_name   10). 將所

22、有列的顯示屬性設(shè)為缺省值 SQL> CLEAR COLUMNS   8. 屏蔽掉一個(gè)列中顯示的相同的值 BREAK ON break_column SQL> BREAK ON DEPTNO SQL> SELECT DEPTNO, ENAME, SAL FROM EMP   WHERE SAL < 2500   ORDER BY DEPTNO; DEPTNO      ENAME         SAL - - -

23、 10           CLARK        2450 MILLER      1300 20            SMITH       800 ADAMS   

24、60;   1100   9. 在上面屏蔽掉一個(gè)列中顯示的相同的值的顯示中,每當(dāng)列值變化時(shí)在值變化之前插入n個(gè)空行。 BREAK ON break_column SKIP n   SQL> BREAK ON DEPTNO SKIP 1 SQL> / DEPTNO ENAME SAL - - - 10 CLARK 2450 MILLER 1300   20 SMITH 800 ADAMS 1100   10. 顯示對(duì)BREAK的設(shè)置 SQL> BREAK   11. 刪除6、7的設(shè)置 SQL> CLEA

25、R BREAKS   12. Set 命令: 該命令包含許多子命令: SET system_variable value system_variable value 可以是如下的子句之一: APPINFOON|OFF|text ARRAYSIZE 15|n AUTOCOMMITON|OFF|IMMEDIATE|n AUTOPRINT ON|OFF AUTORECOVERY ON|OFF AUTOTRACE ON|OFF|TRACEONLY EXPLAIN STATISTICS BLOCKTERMINATOR .|c CMDSEP ;|c|ON|OFF COLSEP _|text CO

26、MPATIBILITYV7|V8|NATIVE CONCAT .|c|ON|OFF COPYCOMMIT 0|n COPYTYPECHECK ON|OFF DEFINE &|c|ON|OFF DESCRIBE DEPTH 1|n|ALLLINENUM ON|OFFINDENT ON|OFF ECHO ON|OFF EDITFILE file_name.ext EMBEDDED ON|OFF ESCAPE /|c|ON|OFF FEEDBACK 6|n|ON|OFF FLAGGER OFF|ENTRY |INTERMEDIATE|FULL FLUSH ON|OFF HEADING ON|

27、OFF HEADSEP |c|ON|OFF INSTANCE instance_path|LOCAL LINESIZE 80|n LOBOFFSET n|1 LOGSOURCE pathname LONG 80|n LONGCHUNKSIZE 80|n MARKUP HTML ON|OFF HEAD text BODY text ENTMAP ON|OFF SPOOL ON|OFF PREFORMAT ON|OFF NEWPAGE 1|n|NONE NULL text NUMFORMAT format NUMWIDTH 10|n PAGESIZE 24|n PAUSE ON|OFF|text

28、RECSEP WRAPPED|EACH|OFF RECSEPCHAR _|c SERVEROUTPUT ON|OFF SIZE n FORMAT WRAPPED|WORD_ WRAPPED|TRUNCATED SHIFTINOUT VISIBLE|INVISIBLE SHOWMODE ON|OFF SQLBLANKLINES ON|OFF SQLCASE MIXED|LOWER|UPPER SQLCONTINUE > |text SQLNUMBER ON|OFF SQLPREFIX #|c SQLPROMPT SQL>|text SQLTERMINATOR ;|c|ON|OFF S

29、UFFIX SQL|text TAB ON|OFF TERMOUT ON|OFF TIME ON|OFF TIMING ON|OFF TRIMOUT ON|OFF TRIMSPOOL ON|OFF UNDERLINE -|c|ON|OFF VERIFY ON|OFF WRAP ON|OFF   1). 設(shè)置當(dāng)前session是否對(duì)修改的數(shù)據(jù)進(jìn)行自動(dòng)提交 SQL>SET AUTOCOMMIT ON|OFF|IMMEDIATE| n   2)在用start命令執(zhí)行一個(gè)sql腳本時(shí),是否顯示腳本中正在執(zhí)行的SQL語句 SQL> SET ECHO ON|OFF 

30、0; 3).是否顯示當(dāng)前sql語句查詢或修改的行數(shù) SQL> SET FEEDBACK 6|n|ON|OFF    默認(rèn)只有結(jié)果大于6行時(shí)才顯示結(jié)果的行數(shù)。如果set feedback 1 ,則不管查詢到多少行都返回。當(dāng)為off 時(shí),一律不顯示查詢的行數(shù)   4).是否顯示列標(biāo)題 SQL> SET HEADING ON|OFF 當(dāng)set heading off 時(shí),在每頁的上面不顯示列標(biāo)題,而是以空白行代替   5).設(shè)置一行可以容納的字符數(shù) SQL> SET LINESIZE 80|n    如果一行的輸出內(nèi)容大于

31、設(shè)置的一行可容納的字符數(shù),則折行顯示。   6).設(shè)置頁與頁之間的分隔 SQL> SET NEWPAGE 1|n|NONE 當(dāng)set newpage 0 時(shí),會(huì)在每頁的開頭有一個(gè)小的黑方框。 當(dāng)set newpage n 時(shí),會(huì)在頁和頁之間隔著n個(gè)空行。 當(dāng)set newpage none 時(shí),會(huì)在頁和頁之間沒有任何間隔。   7).顯示時(shí),用text值代替NULL值 SQL> SET NULL text   8).設(shè)置一頁有多少行數(shù) SQL> SET PAGESIZE 24|n 如果設(shè)為0,則所有的輸出內(nèi)容為一頁并且不顯示列標(biāo)題  

32、9).是否顯示用DBMS_OUTPUT.PUT_LINE包進(jìn)行輸出的信息。 SQL> SET SERVEROUTPUT ON|OFF  在編寫存儲(chǔ)過程時(shí),我們有時(shí)會(huì)用dbms_output.put_line將必要的信息輸出,以便對(duì)存儲(chǔ)過程進(jìn)行調(diào)試,只有將serveroutput變量設(shè)為on后,信息才能顯示在屏幕上。   10).當(dāng)SQL語句的長(zhǎng)度大于LINESIZE時(shí),是否在顯示時(shí)截取SQL語句。 SQL> SET WRAP ON|OFF    當(dāng)輸出的行的長(zhǎng)度大于設(shè)置的行的長(zhǎng)度時(shí)(用set linesize n命令設(shè)置),當(dāng)set wrap

33、 on時(shí),輸出行的多于的字符會(huì)另起一行顯示,否則,會(huì)將輸出行的多于字符切除,不予顯示。   11).是否在屏幕上顯示輸出的內(nèi)容,主要用與SPOOL結(jié)合使用。 SQL> SET TERMOUT ON|OFF    在用spool命令將一個(gè)大表中的內(nèi)容輸出到一個(gè)文件中時(shí),將內(nèi)容輸出在屏幕上會(huì)耗費(fèi)大量的時(shí)間,設(shè)置set termspool off后,則輸出的內(nèi)容只會(huì)保存在輸出文件中,不會(huì)顯示在屏幕上,極大的提高了spool的速度。   12).將SPOOL輸出中每行后面多余的空格去掉 SQL> SET TRIMSOUT ON|OFF  &

34、#160;   13)顯示每個(gè)sql語句花費(fèi)的執(zhí)行時(shí)間 set TIMING  ON|OFF 14). 遇到空行時(shí)不認(rèn)為語句已經(jīng)結(jié)束,從后續(xù)行接著讀入。SET SQLBLANKLINES ONSql*plus中, 不允許sql語句中間有空行, 這在從其它地方拷貝腳本到sql*plus中執(zhí)行時(shí)很麻煩. 比如下面的腳本:select deptno, empno, enamefrom empwhere empno = '7788'如果拷貝到sql*plus中執(zhí)行, 就會(huì)出現(xiàn)錯(cuò)誤。這個(gè)命令可以解決該問題15).設(shè)置DBMS_OUTPUT的輸出SET SER

35、VEROUTPUT ON BUFFER 20000用dbms_output.put_line('strin_content');可以在存儲(chǔ)過程中輸出信息,對(duì)存儲(chǔ)過程進(jìn)行調(diào)試如果想讓dbms_output.put_line('     abc');的輸出顯示為:SQL>     abc,而不是SQL>abc,則在SET SERVEROUTPUT ON后加format wrapped參數(shù)。16). 輸出的數(shù)據(jù)為html格式set markup html在8.1.7版本(也許是

36、816? 不太確定)以后, sql*plus中有一個(gè)set markup html的命令, 可以將sql*plus的輸出以html格式展現(xiàn).注意其中的spool on, 當(dāng)在屏幕上輸出的時(shí)候, 我們看不出與不加spool on有什么區(qū)別, 但是當(dāng)我們使用spool filename 輸出到文件的時(shí)候, 會(huì)看到spool文件中出現(xiàn)了等tag.14修改sql buffer中的當(dāng)前行中,第一個(gè)出現(xiàn)的字符串 CHANGE /old_value/new_value SQL> l    1* select * from dept SQL> c/dept/emp  

37、  1* select * from emp   15編輯sql buffer中的sql語句 EDIT   16顯示sql buffer中的sql語句,list n顯示sql buffer中的第n行,并使第n行成為當(dāng)前行 LIST n   17在sql buffer的當(dāng)前行下面加一行或多行 INPUT   18將指定的文本加到sql buffer的當(dāng)前行后面 APPEND SQL> select deptno,    2  dname    3  from dept;  

38、;    DEPTNO DNAME - -          10 ACCOUNTING          20 RESEARCH          30 SALES          40 OPERATIONS   SQL> L 2

39、    2* dname SQL> a ,loc    2* dname,loc SQL> L    1  select deptno,    2  dname,loc    3* from dept SQL> /        DEPTNO DNAME          LOC - - -   &#

40、160;      10 ACCOUNTING     NEW YORK          20 RESEARCH       DALLAS          30 SALES          CH

41、ICAGO          40 OPERATIONS     BOSTON   19將sql buffer中的sql語句保存到一個(gè)文件中 SAVE file_name   20將一個(gè)文件中的sql語句導(dǎo)入到sql buffer中 GET file_name   21再次執(zhí)行剛才已經(jīng)執(zhí)行的sql語句 RUN or /   22執(zhí)行一個(gè)存儲(chǔ)過程 EXECUTE procedure_name   23在sql*plus中連接到指

42、定的數(shù)據(jù)庫(kù) CONNECT user_name/passwddb_alias   24設(shè)置每個(gè)報(bào)表的頂部標(biāo)題 TTITLE   25設(shè)置每個(gè)報(bào)表的尾部標(biāo)題 BTITLE   26寫一個(gè)注釋 REMARK text   27將指定的信息或一個(gè)空行輸出到屏幕上 PROMPT text   28將執(zhí)行的過程暫停,等待用戶響應(yīng)后繼續(xù)執(zhí)行 PAUSE text   Sql>PAUSE Adjust paper and press RETURN to continue.   29將一個(gè)數(shù)據(jù)庫(kù)中的一些數(shù)據(jù)拷貝到另外一個(gè)數(shù)據(jù)庫(kù)(如將一

43、個(gè)表的數(shù)據(jù)拷貝到另一個(gè)數(shù)據(jù)庫(kù)) COPY FROM database | TO database | FROM database TO database APPEND|CREATE|INSERT|REPLACE destination_table (column, column, column, .) USING query   sql>COPY FROM SCOTT/TIGERHQ TO JOHN/CHROMEWEST  create emp_temp USING SELECT * FROM EMP   30不退出sql*plus,在sql*plus中執(zhí)行

44、一個(gè)操作系統(tǒng)命令: HOST   Sql> host hostname 該命令在windows下可能被支持。   31在sql*plus中,切換到操作系統(tǒng)命令提示符下,運(yùn)行操作系統(tǒng)命令后,可以再次切換回sql*plus: !   sql>! $hostname $exit sql>   該命令在windows下不被支持。   32顯示sql*plus命令的幫助 HELP 如何安裝幫助文件: Sql> ?/sqlplus/admin/help/hlpbld.sql ?/sqlplus/admin/help/helpus.s

45、ql Sql>help index   33顯示sql*plus系統(tǒng)變量的值或sql*plus環(huán)境變量的值 Syntax SHOW option where option represents one of the following terms or clauses: system_variable ALL BTITLE ERRORS FUNCTION|PROCEDURE|PACKAGE|PACKAGE BODY| TRIGGER|VIEW|TYPE|TYPE BODY LNO PARAMETERS parameter_name PNO RELEASE

46、 REPFOOTER REPHEADER SGA SPOOL SQLCODE TTITLE USER   1) . 顯示當(dāng)前環(huán)境變量的值: Show all   2) . 顯示當(dāng)前在創(chuàng)建函數(shù)、存儲(chǔ)過程、觸發(fā)器、包等對(duì)象的錯(cuò)誤信息 Show error 當(dāng)創(chuàng)建一個(gè)函數(shù)、存儲(chǔ)過程等出錯(cuò)時(shí),變可以用該命令查看在那個(gè)地方出錯(cuò)及相應(yīng)的出錯(cuò)信息,進(jìn)行修改后再次進(jìn)行編譯。   3) . 顯示初始化參數(shù)的值: show PARAMETERS parameter_name   4) . 顯示數(shù)據(jù)庫(kù)的版本: show RELEASE   5) . 顯示SGA的大小

47、 show SGA   6). 顯示當(dāng)前的用戶名 show user34.查詢一個(gè)用戶下的對(duì)象SQL>select * from tab;SQL>select * from user_objects;35.查詢一個(gè)用戶下的所有的表SQL>select * from user_tables;36.查詢一個(gè)用戶下的所有的索引SQL>select * from user_indexes;37. 定義一個(gè)用戶變量方法有兩個(gè):a. defineb. COLUMN column|expr NEW_VALUE variable NOPRINT|PRINT 

48、0;                          OLD_VALUE variable  NOPRINT|PRINT下面對(duì)每種方式給予解釋:a. SyntaxDEFINE variable|variable = text定義一個(gè)用戶變量并且可以分配給它一個(gè)CHAR值。assign the value MANAGER to the v

49、ariable POS, type:SQL> DEFINE POS = MANAGERassign the CHAR value 20 to the variable DEPTNO, type:SQL> DEFINE DEPTNO = 20list the definition of DEPTNO, enterSQL> DEFINE DEPTNO        DEFINE DEPTNO = ”20” (CHAR)定義了用戶變量POS后,就可以在sql*plus中用&POS或&&PO

50、S來引用該變量的值,sql*plus不會(huì)再提示你給變量輸入值。b. COLUMN column|expr NEW_VALUE variable NOPRINT|PRINTNEW_VALUE variable指定一個(gè)變量容納查詢出的列值。例:column col_name new_value var_name noprint   select col_name from table_name where .將下面查詢出的col_name列的值賦給var_name變量.一個(gè)綜合的例子:得到一個(gè)列值的兩次查詢之差(此例為10秒之內(nèi)共提交了多少事務(wù)):column redo_wri

51、tes new_value commit_countselect sum(stat.value) redo_writesfrom v$sesstat stat, v$statname snwhere stat.statistic# = sn.statistic#and = 'user commits'- 等待一會(huì)兒(此處為10秒);execute dbms_lock.sleep(10);set veri offselect sum(stat.value) - &commit_count commits_addedfrom v$sesstat stat,

52、v$statname snwhere stat.statistic# = sn.statistic#and = 'user commits'38. 定義一個(gè)綁定變量VARIABLE variable NUMBER|CHAR|CHAR (n)|NCHAR|NCHAR (n) |VARCHAR2 (n)|NVARCHAR2 (n)|CLOB|NCLOB|REFCURSOR定義一個(gè)綁定變量,該變量可以在pl/sql中引用??梢杂胮rint命令顯示該綁定變量的信息。如:column inst_num  heading "Inst Num"&

53、#160; new_value inst_num  format 99999;column inst_name heading "Instance"  new_value inst_name format a12;column db_name   heading "DB Name"   new_value db_name   format a12;column dbid      heading "DB Id&quo

54、t;     new_value dbid      format 9999999999 just c;promptprompt Current Instanceprompt select d.dbid            dbid     ,         &#

55、160;   db_name     , i.instance_number inst_num     , i.instance_name   inst_name  from v$database d,       v$instance i;variable dbid       number;variable inst_num 

56、0; number;begin  :dbid      :=  &dbid;  :inst_num  :=  &inst_num;end;/說明:在sql*plus中,該綁定變量可以作為一個(gè)存儲(chǔ)過程的參數(shù),也可以在匿名PL/SQL塊中直接引用。為了顯示用VARIABLE命令創(chuàng)建的綁定變量的值,可以用print命令注意:綁定變量不同于變量:1        定義方法不同2   

57、60;    引用方法不同綁定變量::variable_name        變量:&variable_name or &&variable_name3.在sql*plus中,可以定義同名的綁定變量與用戶變量,但是引用的方法不同。39. &與&&的區(qū)別&用來創(chuàng)建一個(gè)臨時(shí)變量,每當(dāng)遇到這個(gè)臨時(shí)變量時(shí),都會(huì)提示你輸入一個(gè)值。&&用來創(chuàng)建一個(gè)持久變量,就像用用define命令或帶new_vlaue字句的column命令創(chuàng)建的持久

58、變量一樣。當(dāng)用&&命令引用這個(gè)變量時(shí),不會(huì)每次遇到該變量就提示用戶鍵入值,而只是在第一次遇到時(shí)提示一次。如,將下面三行語句存為一個(gè)腳本文件,運(yùn)行該腳本文件,會(huì)提示三次,讓輸入deptnoval的值:select count(*) from emp where deptno = &deptnoval;select count(*) from emp where deptno = &deptnoval;select count(*) from emp where deptno = &deptnoval;將下面三行語句存為一個(gè)腳本文件,運(yùn)行該腳本文件,則只會(huì)提

59、示一次,讓輸入deptnoval的值:select count(*) from emp where deptno = &&deptnoval;select count(*) from emp where deptno = &&deptnoval;select count(*) from emp where deptno = &&deptnoval;40在輸入sql語句的過程中臨時(shí)先運(yùn)行一個(gè)sql*plus命令(摘自)#有沒有過這樣的經(jīng)歷? 在sql*plus中敲了很長(zhǎng)的命令后, 突然發(fā)現(xiàn)想不起某個(gè)列的名字了, 如果取消當(dāng)前的命令,待查詢后再重敲,

60、 那太痛苦了. 當(dāng)然你可以另開一個(gè)sql*plus窗口進(jìn)行查詢, 但這里提供的方法更簡(jiǎn)單.比如說, 你想查工資大于4000的員工的信息, 輸入了下面的語句:SQL> select deptno, empno, ename2 from emp3 where這時(shí), 你發(fā)現(xiàn)你想不起來工資的列名是什么了.這種情況下, 只要在下一行以#開頭, 就可以執(zhí)行一條sql*plus命令, 執(zhí)行完后, 剛才的語句可以繼續(xù)輸入SQL>> select deptno, empno, ename2 from emp3 where6 #desc empName Null? Type- - -EMPNO

61、NOT NULL NUMBER(4)ENAME VARCHAR2(10)JOB VARCHAR2(9)MGR NUMBER(4)HIREDATE DATESAL NUMBER(7,2)COMM NUMBER(7,2)DEPTNO NUMBER(2)6 sal > 4000;DEPTNO EMPNO ENAME- - -10 7839 KING41. SQLPlus中的快速?gòu)?fù)制和粘貼技巧(摘自)1) 鼠標(biāo)移至想要復(fù)制內(nèi)容的開始 2) 用右手食指按下鼠標(biāo)左鍵 3) 向想要復(fù)制內(nèi)容的另一角拖動(dòng)鼠標(biāo),與Word中選取內(nèi)容的方法一樣 4) 內(nèi)容選取完畢后(所選內(nèi)容全部反顯),鼠標(biāo)左鍵

62、按住不動(dòng),用右手中指按鼠標(biāo)右鍵 5) 這時(shí),所選內(nèi)容會(huì)自動(dòng)復(fù)制到SQL*Plus環(huán)境的最后一行 Sql*plus中蘊(yùn)藏著好多技巧,如果掌握這些技巧,對(duì)于在oracle數(shù)據(jù)庫(kù)下進(jìn)行快速開發(fā)與有效維護(hù)數(shù)據(jù)庫(kù)都是有益的。        下面就接受一二,        1使用SQL*PLUS動(dòng)態(tài)生成批量腳本將spool與select命令結(jié)合起來使用,可以生成一個(gè)腳本,腳本中包含有可以批量執(zhí)行某一任務(wù)的語句。例1:生成一個(gè)腳本,刪除SCOTT用戶下的所有的

63、表:a. 創(chuàng)建gen_drop_table.sql文件,包含如下語句:SPOOL  c:/drop_table.sql      SELECT 'DROP TABLE '| table_name |'' FROM user_tables;      SPOOL OFF b. 以SCOTT用戶登錄數(shù)據(jù)庫(kù)SQLPLUS > ./gen_dorp_table.sqlc. 在c盤根目錄下會(huì)生成文件drop_table.sql文件,包含刪除所有表的語句,如下所示:SQL>

64、      SELECT 'DROP TABLE '| table_name |'' FROM user_tables;                                  

65、                                                  

66、           'DROPTABLE'|TABLE_NAME|''                           - DROP TABLE DEPT;    

67、;                                     DROP TABLE EMP;           &

68、#160;                             DROP TABLE PARENT;                  

69、                    DROP TABLE STAT_VENDER_TEMP;                      DROP TABLE TABLE_FORUM; &

70、#160;                                                  

71、                                                  

72、         5 rows selected.                               SQL>      SPOOL OFF  d. 對(duì)生

73、成的drop_table.sql文件進(jìn)行編輯去掉不必要的部分,只留下drop table .語句e. 在scott用戶下運(yùn)行dorp_table.sql文件,刪除scott用戶下所有的表。SQLPLUS > c:/dorp_table.sql在上面的操作中,在生成的腳本文件中會(huì)有多余的字符,如運(yùn)行的sql語句,標(biāo)題,或返回的行數(shù),需要我們編輯該腳本后再運(yùn)行,給實(shí)際的操作帶來諸多不便。懶惰是人的本性,這促使我們用更簡(jiǎn)單的辦法來實(shí)現(xiàn)上面的任務(wù)。a. 創(chuàng)建gen_drop_table.sql文件,包含如下語句:       

74、 set echo offset feedback offset newpage noneset pagesize 5000set linesize 500set verify offset pagesize 0set term offset trims onset linesize 600set heading  off set timing offset verify offset numwidth 38SPOOL  c:/drop_table.sql      SELECT 'DROP TABLE '| tabl

75、e_name |'' FROM user_tables;      SPOOL OFF b. 以SCOTT用戶登錄數(shù)據(jù)庫(kù)SQLPLUS > ./gen_dorp_table.sqlc. 在c盤根目錄下會(huì)生成文件drop_table.sql文件,包含刪除所有表的語句,如下所示:DROP TABLE DEPT;                   &

76、#160;                     DROP TABLE EMP;                          

77、60;              DROP TABLE PARENT;                                 &#

78、160;    DROP TABLE STAT_VENDER_TEMP;                      DROP TABLE TABLE_FORUM;                

79、60;             d. 在scott用戶下運(yùn)行dorp_table.sql文件,刪除scott用戶下所有的表。SQLPLUS > c:/dorp_table.sql2將一個(gè)表中的數(shù)據(jù)導(dǎo)出生成一個(gè)文本文件,列與列之間以”,”隔開set echo offset feedback offset newpage noneset pagesize 5000set linesize 500set verify offset pagesize 0set term off

80、set trims onset linesize 600set heading  off set timing offset verify offset numwidth 38SPOOL  c:/drop_table.sql      select DEPTNO | ',' | DNAME FROM DEPT;     SPOOL OFF 將上面的內(nèi)容保存為一個(gè)文本文件后,以scott登錄,執(zhí)行該文件后顯示結(jié)果:10,ACCOUNTING  20,RESEARCH

81、60; 30,SALES  40,OPERATIONS  通過上面的兩個(gè)例子,我們可以將:set echo offset feedback offset newpage noneset pagesize 5000set linesize 500set verify offset pagesize 0set term offset trims onset linesize 600set heading  off set timing offset verify offset numwidth 38SPOOL  c:/具體的文件名   &

82、#160;  你要運(yùn)行的sql語句     SPOOL OFF作為一個(gè)模版,只要將必要的語句假如這個(gè)模版就可以了。在oracle的較新版本中,還可以用set colsep命令來實(shí)現(xiàn)上面的功能:SQL> set colsep ,SQL> select * from dept;        10,ACCOUNTING    ,NEW YORK        20,RE

83、SEARCH      ,DALLAS        30,SALES         ,CHICAGO        40,OPERATIONS    ,BOSTON        35,aa            ,bb3動(dòng)態(tài)生成spool命令所需的文件名在我們上面的例子中,spool命令所需要的文件名都是固定的。有時(shí)我們需要每天spool一次,并且每次spool的文件名都不相同,如文件名包含當(dāng)天的日期,該如何實(shí)現(xiàn)呢?column dat1 new_value filename;selec

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論