天天看點

替代變量與SQL*Plus環境設定

--============================

-- 替代變量與SQL*Plus環境設定

1.SQL與PL/SQL代碼終止符

    SQL代碼以";"來表示代碼的終止

    PL/SQL代碼以"."來表示代碼的終止,以"/"表示代碼的執行

        scott@ORCL> select * from emp where empno=7788;

             EMPNO ENAME      JOB              MGR HIREDATE         SAL       COMM     DEPTNO

        ---------- ---------- --------- ---------- --------- ---------- ---------- ----------

              7788 SCOTT      ANALYST         7566 19-APR-87       3100                    20

        scott@ORCL> declare v_ename varchar2(10);

          2  begin

          3  select ename into v_ename from emp where empno=7788;

          4  dbms_output.put_line('Employee Name: '||v_ename);

          5  exception

          6      when no_data_found then

          7      dbms_output.put_line('There is no employee');

          8  end;

          9  .

        scott@ORCL> /

        Employee Name: SCOTT

        PL/SQL procedure successfully completed.

2.替代變量

    &變量名、&&變量名

    執行時,如果&變量名,沒有指派的話,會提示輸入變量值

        scott@ORCL> select * from emp where empno=&no;

        Enter value for no: 7788

        old   1: select * from emp where empno=&no

        new   1: select * from emp where empno=7788

        scott@ORCL> save /u01/bk/scripts/select_empno.sql

        Created file /u01/bk/scripts/select_empno.sql

        scott@ORCL> @/u01/bk/scripts/select_empno.sql

    set verify 的使用        

        scott@ORCL> set verify off   --使用set verify off來關閉替代變量使用時的提示,即執行SQL語句前不顯示使用的變量值

              7788 SCOTT      ANALYST         7566 19-APR-87       3100                    20    

    對于字元型和日期型資料,替代變量要加單引号( ' ' ),将變量括起來

        select * from emp where job='&job'

    &&  對輸入變量的再次引用,同時會儲存變量的值

        scott@ORCL> set serveroutput on;

        scott@ORCL> begin

          2  dbms_output.put_line('The num is '||&&num);   --使用雙&&儲存了變量num的值

          3  dbms_output.put_line('The second num is '||&num);  --是以第二次輸出變量num也是

          4  end;

          5  /

        Enter value for num: 10

        The num is 10

        The second num is 10

    替代變量的設定

        set define character    --修改預設的替代變量符号為其他符号,但不能使用數字和空格

        set define on           --啟用替代變量

        set define off          --關閉替代變量

        scott@ORCL> set define off

        SP2-0552: Bind variable "NO" not declared.

3.  DEFINE  定義變量

        define job=SALESMAN

    DEFINE 檢視變量

        define

        define varname

    ACCEPT  定義替代變量

        格式:accept 變量名[prompt 正文][HIDE]

4.sql plus 環境設定

    set 設定環境變量

        如set linesize 200

    show 顯示環境變量

        如show all

        show linesize

    sql plus 環境配置檔案

        配置檔案:

            $ORACLE_HOME/sqlplus/admin/glogin.sql

            安裝sql plus時建立的,解除安裝sql plus時會删除

    使用者配置檔案:

        檔案名為login.sql,位置可任意放置,啟動sql plus 時所在目錄下有login.sql

        就會按設定進行環境配置,否則其它目錄下的login.sql不理采。

        為了使用的友善一般會放到oracle使用者的家目錄

    set echo    @|start 運作腳本時,是否顯示腳本内容

        set echo on/off

        scott@ORCL> set echo on;

        scott@ORCL> select * from emp where empno=&no

          2  /

        scott@ORCL> set echo off;      

    set feedback    設定腳注

            查詢時傳回多少行,會有提示,feedback控制提示顯示

            可以是ON、OFF、n自然數,預設為

            set feedback on/off

            set feedback 10

    set heading {on/off}    控制是否顯示列名

    set linesize    設定每行字元數

    set autocommit {on / off }  設定是否自動送出

    set long {80 |n}   設定檢視長字元字段時的顯示寬度

    column  設定列格式

        col ename format a15

    通用的SQL*Plus環境變量設定

        源自Tom大師:Expert Oracle Database Architecture: 9i and 10g Programming Techniques and Solutions   

        define _editor=vi

        set serveroutput on size 1000000

        set trimspool on

        set long 5000

        set linesize 180

        set pagesize 9999

        column plan_plus_exp format a80

        column global_name new_value gname

        set termout off

        define gname=idle

        select lower(user) || '@' || substr( global_name, 1,

        decode( dot, 0, length(global_name), dot-1) ) global_name

        from (select global_name, instr(global_name,'.') dot from global_name );

        set sqlprompt '&gname> '

        set termout on

5.更多參考

有關SQL請參考

<a href="http://blog.csdn.net/robinson_0612/archive/2010/05/05/5559110.aspx">SQL基礎--&gt;分組與分組函數</a>

<a href="http://blog.csdn.net/robinson_0612/archive/2010/04/16/5495170.aspx">SQL 基礎--&gt;常用函數</a>

<a href="http://blog.csdn.net/robinson_0612/archive/2010/06/01/5640031.aspx">SQL 基礎--&gt; ROLLUP與CUBE運算符實作資料彙總</a>

<a href="http://blog.csdn.net/robinson_0612/archive/2010/05/22/5616877.aspx">SQL基礎--&gt;階層化查詢(START BY ... CONNECT BY PRIOR)</a>

    有關PL/SQL請參考

        PL/SQL --&gt; 語言基礎

        PL/SQL --&gt; 函數

        PL/SQL --&gt; 異常處理

        PL/SQL --&gt; 存儲過程

        PL/SQL --&gt; 流程控制