--============================
-- 替代變量與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基礎-->分組與分組函數</a>
<a href="http://blog.csdn.net/robinson_0612/archive/2010/04/16/5495170.aspx">SQL 基礎-->常用函數</a>
<a href="http://blog.csdn.net/robinson_0612/archive/2010/06/01/5640031.aspx">SQL 基礎--> ROLLUP與CUBE運算符實作資料彙總</a>
<a href="http://blog.csdn.net/robinson_0612/archive/2010/05/22/5616877.aspx">SQL基礎-->階層化查詢(START BY ... CONNECT BY PRIOR)</a>
有關PL/SQL請參考
PL/SQL --> 語言基礎
PL/SQL --> 函數
PL/SQL --> 異常處理
PL/SQL --> 存儲過程
PL/SQL --> 流程控制