你想在SQL*Plus里执行一个脚本,脚本里包含了一些看起来像替换变量的元素,但实际上你并不是想把它们当替换变量来处理。这时你想让解析器忽略它们而不是提示用户输入。
解决方案1
有一种解决方案就是在&字符前使用转义字符。转义字符可以告诉SQL*Plus不要把转义字符后面的内容当做变量引用来处理。
在下面的代码中,转义字符会让SQL*Plus在碰到字符串“& Receiving”时忽略其中的&字符,只把它当做普通的字符串处理:

解决方案2
另一个方案就是完全禁止替换变量特性,下面的例子中使用SET DEFINE OFF命令来告诉SQL*Plus忽略所有的替换变量:

原理分析
你常常会碰到需要告诉SQL*Plus忽略替换变量的情况。上面两个例子就是这种情况的两个不同解决方案。你可根据具体情况取舍。
通过SET ESCAPE命令设置转义字符,可以告诉SQL*Plus在所有的情况下都将这个特定的字符作为转义字符,这样一来,无论什么时候碰到这个字符,后面紧接着的字符就会被解析器忽略掉。这里所说的“忽略”指的是这个字符不会触发你所预期的那种常规功能,如提示用户输入数据。
使用SET DEFINE OFF命令会使所有的替换变量都被忽略掉。实际上,这种解决方案仅对替换变量起作用,在其他情况下并不会使解析器进行转义。因为这个方法只是转义替换变量,所以在运行脚本时比较适合使用。假设你有一个名字为display_department_info.sql的脚本,其中包含以下SQL:

如果你想通过SQL*Plus执行脚本,并且不使用本案例所提供的任何方案,那么,你就会看到下面的消息:

这段消息之所以出现是因为SQL*Plus把“Importing & Exporting”里的&符号当做替换变量处理了,所以会提示用户输入。现在,再执行一次相同的脚本,不同的是我们先运行SET DEFINE OFF命令:

使用SET DEFINE OFF之后的结果就是你希望得到的。

执行ORACLE SQL时如何 忽略替换变量(转载)的更多相关文章

  1. Oracle SQL调优之绑定变量用法简介

    目录 一.SQL执行过程简介 二.绑定变量典型用法 2.1.在SQL中绑定变量 2.2.在PL/SQL中使用绑定变量 2.3.PL/SQL批量绑定变量 2.4.Java代码里使用绑定变量 最近在看&l ...

  2. 在 root 下执行 Oracle 程序时找不到 libclntsh.so.11.1 错误的解决办法。

    在 root 下执行 Oracle 程序时找不到 libclntsh.so.11.1 错误的解决办法. 先确定 libclntsh.so.11.1 所在目录: [oracle@localhost ~] ...

  3. c#执行插入sql 时,报错:异常信息:超时时间已到。在操作完成之前超时时间已过或服务器未响应

    问题:c#执行插入sql 时,报错:异常信息:超时时间已到.在操作完成之前超时时间已过或服务器未响应 解决: SqlCommand cmd = new SqlCommand(); cmd.Comman ...

  4. C# 执行oracle sql 语句出现中文不兼容的问题

    最近我用C#调用 操作oracle 数据库 出现了一个问题就是 我的查询语中的条件语句 含有中文 字符在C#中查询不了 ,但是在pl sql  中能够正常的查询出来. 这个原因是 C# 执行orccl ...

  5. Sql server在使用sp_executesql @sql执行文本sql时,报错: Could not find database ID 16, name '16'. The database may be offline. Wait a few minutes and try again.

    最近在公司项目中使用exec sp_executesql @sql执行一段文本sql的时候老是报错: Could not find database ID 16, name '16'. The dat ...

  6. .Net 执行 Oracle SQL语句时, 中文变问号

      带中文的Sql语句在.Net调用时, 中文变问号(可使用 SQL Tracker工具跟踪)   问题:       服务器的字符集与客户端的字符集不一致. 解决方法: 1.  查看服务端的字符集: ...

  7. 转 SQL*PLUS中的替换变量(& &&)

    今天oracle support提供一个脚本,大致如下: PROMPT ROUTING_SEQUENCE_ID = &ROUT_SEQ_ID PROMPT OPERATION_SEQUENCE ...

  8. 代码中批量执行Oracle SQL语句

    今天在写一个工具(winform),作用是批量的INSERT OR  UPDATE ORACLE数据库中的一个表. 执行的时候老是报错“[911] ORA-00911: invalid charact ...

  9. SHELL中执行Oracle SQL语句查询性能视图

    数据库日志是否报错信息 vi check_log.sh #!/bin/bash # Created : 2019.10.10 # Updated : # Author : # Description ...

随机推荐

  1. appium自动化安装(二)

    第二节  安装Android开发环境 如果你的环境是MAC那么可以直接跳过这一节.就像我们在用Selenium进行web自动化测试的时候一样,我们需要一个浏览器来执行测试脚本.那么移动端自动化测试,我 ...

  2. 第一个SpringMVC程序(最简单的)

      注册中央调度器,这个中央调度器就是org.springframework.web.servlet.DispatcherServlet这个类(web.xml servlet-name节点的名字,必须 ...

  3. 并发编程学习笔记之可见性&过期数据(二)

    想要使用多线程编程,有一个很重要的前提,那就是必须保证操纵的是线程安全的类. 那么如何构建线程安全的类呢? 1. 使用同步来避免多个线程在同一时间访问同一数据. 2. 正确的共享和安全的发布对象,使多 ...

  4. AngularJS(五)——filter(过滤器)

    前言 过滤器可以用一个管道字符(|)添加到表达式和指令中.比如做ITOO的时候或者其他项目的时候,总是想统一货币日期等显示,以前的做法,不断循环该控件或该标签,然后循环转换.如果利用AngularJS ...

  5. maven+selenium+java+testng+jenkins自动化测试

    最近在公司搭建了一套基于maven+selenium+java+testng+jenkins的自动化测试框架,免得以后重写记录下 工程目录 pom.xml <project xmlns=&quo ...

  6. DP【洛谷P1704】 寻找最优美做题曲线

    [洛谷P1704] 寻找最优美做题曲线 题目背景 nodgd是一个喜欢写程序的同学,前不久(好像还是有点久了)洛谷OJ横空出世,nodgd同学当然第一时间来到洛谷OJ刷题.于是发生了一系列有趣的事情, ...

  7. memcache_helper

    class memcache_helper extends memcache { private $host = "127.0.0.1"; private $port = &quo ...

  8. POJ1051 P,MTHBGWB

    题目来源:http://poj.org/problem?id=1051 题目大意: Morse密码里每个字母用长度不定的点和线来表示,一条信息中字母的编码之间用空隙隔开.下表为Morse密码的编码表: ...

  9. 【笔记】MySQL的基础学习(二)

    [笔记]MySQL的基础学习(二) MySQL 老男孩  一 视图 视图其实就是给表起个别名 1.创建视图 格式:CREATE VIEW 视图名称 AS SQL语句 CREATE VIEW v1 AS ...

  10. python3 logging笔记

    #coding:utf-8import logging logger = logging.getLogger("simple_example")#可以说是日志信息的名字吧,可以随便 ...