2018年8月6日15:11:34
Oracle數據庫腳本中的set define off
前言
最近在公司寫需求,接觸到腳本,第一句set define off;
就不知道什么意思了,查詢后記錄之。
名稱
SET DEFINE
概要
SET DEFINE命令改變標記替代變量的前綴字符。你可以使用SET DEFINE關閉替代變量。
語法
SET DEF[INE] {OFF | ON | prefix_char}
參數
- SET DEF[INE]
- 是一個命令,可以縮寫為SET DEF。
- OFF
- 禁用替代變量。
- ON
- 啟用替代變量,並重置替代前綴字符為默認`&`符號。默認情況下,替代變量是開啟的。
- prefix_char
- 是新替代前綴字符
當你開啟SQL*Plus
,替代變量會默認開啟,且默認前綴字符是&
字符。如果你運行一個在文本字符串中使用了&
的腳本,你也許想改變這個前綴字符。如果你的腳本沒有使用替代變量,你可以發現關閉這個功能非常容易。
例子
開啟替代變量:
SQL> insert into customers (customer_name) values ('Marks & Spencers Ltd');
Enter value for spencers:
old 1: insert into customers (customer_name) values ('Marks & Spencers Ltd')
new 1: insert into customers (customer_name) values ('Marks Ltd')
1 row created.
SQL> select customer_name from customers;
CUSTOMER_NAME
------------------------------
Marks Ltd
禁用替代變量:
SQL> set define off
SQL> insert into customers (customer_name) values ('Marks & Spencers Ltd');
1 row created.
SQL> select customer_name from customers;
CUSTOMER_NAME
------------------------------
Marks & Spencers Ltd
上面的例子你需要customers表,但是有一個表是所有Oracle數據庫都擁有的,沒錯就是dual。如果想了解dual,可以查看本人的文章select 1 from dual。
SQL> set define off;
SQL> select * from dual where dummy='&var';
no rows selected
SQL> set define on
SQL> /
Enter value for var: X
old 1: select * from dual where dummy='&var'
new 1: select * from dual where dummy='X'
D
-
X
總結
set define off;
的作用就是關閉替代變量,默認情況下是開啟。
參考
SET-DEFINE - Oracle SQL*Plus
: The Definitive Guide, 2nd Edition by Jonathan Gennick
When or Why to use a “SET DEFINE OFF” in Oracle Database
2018年8月6日16:37:24