Oracle數據庫腳本中的set define off


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM