zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    POJ2785-4 Values whose Sum is 0
    Codeforce 9C
    Codeforces 797C -Minimal string
    程序员自我修养
    异或
    Socket网络编程
    java编写本月日历
    PreparedStatement的用法
    项目导入时报错:The import javax.servlet.http.HttpServletRequest cannot be resolved 解决方法
    Dell灵越 5559笔记本安装固态硬盘 BIOS设置
  • 原文地址:https://www.cnblogs.com/mingmingcome/p/9431054.html
Copyright © 2011-2022 走看看