--============================
-- 替代變量與 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
?
??????????? ? EMPNO ENAME ????? JOB ????????????? MGR HIREDATE ???????? SAL ?????? COMM ???? DEPTNO
??????? ---------- ---------- --------- ---------- --------- ---------- ---------- ----------
??????????? ? 7788 SCOTT ????? ANALYST ???????? 7566 19 - APR - 87 ?????? 3100 ??????????????????? 20
?
??????? 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
??????? Enter value for no : 7788
??????? old ?? 1 : select * from emp where empno =& no
??????? new ?? 1 : select * from emp where empno = 7788
?
??????????? ? EMPNO ENAME ????? JOB ????????????? MGR HIREDATE ???????? SAL ?????? COMM ???? DEPTNO
??????? ---------- ---------- --------- ---------- --------- ---------- ---------- ----------
??????????? ? 7788 SCOTT ????? ANALYST ???????? 7566 19 - APR - 87 ?????? 3100 ??????????????????? 20
?
??? set verify 的使用 ?????? ?
??????? scott@ORCL > set verify off ?? -- 使用 set verify off 來關閉替代變量使用時的提示,即執行 SQL 語句前不顯示使用的變量值
??????? scott@ORCL > @/u01 / bk / scripts / select_empno . sql
??????? Enter value for no : 7788
?
??????????? ? EMPNO ENAME ????? JOB ????????????? MGR HIREDATE ???????? SAL ?????? COMM ???? DEPTNO
??????? ---------- ---------- --------- ---------- --------- ---------- ---------- ----------
??????????? ? 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
??????? scott@ORCL > @/u01 / bk / scripts / select_empno . sql
??????? SP2 - 0552 : Bind variable "NO" not declared .
???
?
3. ? DEFINE ? 定義變量
??????? define job = SALESMAN
??????? select * from emp where job = '&job'
?
??? 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 > @/u01 / bk / scripts / select_empno . sql
??????? scott@ORCL > select * from emp where empno =& no
??????? ? 2 ? /
??????? Enter value for no : 7788
?
??????????? ? EMPNO ENAME ????? JOB ????????????? MGR HIREDATE ???????? SAL ?????? COMM ???? DEPTNO
??????? ---------- ---------- --------- ---------- --------- ---------- ---------- ----------
??????????? ? 7788 SCOTT ????? ANALYST ???????? 7566 19 - APR - 87 ?????? 3100 ??????????????????? 20
?
??????? 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
??????? column global_name new_value gname
??????? 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 請參考
??? ??? SQLPlus 常用 命令
??????? SQL 基礎--> 子查詢
??????? SQL 基礎--> 多表查詢
SQL 基礎--> ROLLUP 與CUBE 運算符實現數據匯總
SQL 基礎--> 層次化查詢(START BY ... CONNECT BY PRIOR)
?
??? 有關 PL/SQL 請參考
??????? PL/SQL --> 語言基礎
??????? PL/SQL --> 函數
??????? PL/SQL --> 異常處理
??????? PL/SQL --> 存儲過程
??????? PL/SQL --> 流程控制
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
