执行ORACLE SQL时如何 忽略替换变量(转载)
你想在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时如何 忽略替换变量(转载)的更多相关文章
- Oracle SQL调优之绑定变量用法简介
目录 一.SQL执行过程简介 二.绑定变量典型用法 2.1.在SQL中绑定变量 2.2.在PL/SQL中使用绑定变量 2.3.PL/SQL批量绑定变量 2.4.Java代码里使用绑定变量 最近在看&l ...
- 在 root 下执行 Oracle 程序时找不到 libclntsh.so.11.1 错误的解决办法。
在 root 下执行 Oracle 程序时找不到 libclntsh.so.11.1 错误的解决办法. 先确定 libclntsh.so.11.1 所在目录: [oracle@localhost ~] ...
- c#执行插入sql 时,报错:异常信息:超时时间已到。在操作完成之前超时时间已过或服务器未响应
问题:c#执行插入sql 时,报错:异常信息:超时时间已到.在操作完成之前超时时间已过或服务器未响应 解决: SqlCommand cmd = new SqlCommand(); cmd.Comman ...
- C# 执行oracle sql 语句出现中文不兼容的问题
最近我用C#调用 操作oracle 数据库 出现了一个问题就是 我的查询语中的条件语句 含有中文 字符在C#中查询不了 ,但是在pl sql 中能够正常的查询出来. 这个原因是 C# 执行orccl ...
- 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 ...
- .Net 执行 Oracle SQL语句时, 中文变问号
带中文的Sql语句在.Net调用时, 中文变问号(可使用 SQL Tracker工具跟踪) 问题: 服务器的字符集与客户端的字符集不一致. 解决方法: 1. 查看服务端的字符集: ...
- 转 SQL*PLUS中的替换变量(& &&)
今天oracle support提供一个脚本,大致如下: PROMPT ROUTING_SEQUENCE_ID = &ROUT_SEQ_ID PROMPT OPERATION_SEQUENCE ...
- 代码中批量执行Oracle SQL语句
今天在写一个工具(winform),作用是批量的INSERT OR UPDATE ORACLE数据库中的一个表. 执行的时候老是报错“[911] ORA-00911: invalid charact ...
- SHELL中执行Oracle SQL语句查询性能视图
数据库日志是否报错信息 vi check_log.sh #!/bin/bash # Created : 2019.10.10 # Updated : # Author : # Description ...
随机推荐
- java 删除文件夹中的所有文件及文件夹
删除文件夹(前提:文件夹为空以及InputStream和OutputStream等一些数据文件流关掉[close()],否则文件无法删除) //删除文件夹 public static void del ...
- [转]Marshaling a SAFEARRAY of Managed Structures by P/Invoke Part 2.
1. Introduction. 1.1 In part 1 of this series of articles, I explained how managed arrays may be tra ...
- Installing the .NET Framework 3.5 on Windows 8, Windows 8.1 and Windows 10
Installing the .NET Framework 3.5 on Windows 8, Windows 8.1 and Windows 10 .NET Framework (current v ...
- webpack4 入门(二)
一.管理输出 1.多入口配置 entry: { index1: './src/index.js', index2: './src/index2.js' }, output: { filename: ' ...
- Python和FTP
1.HTTP主要用于基于Web的文件下载以及访问Web服务,一般客户端无须登录就可以访问服务器上的文件和服务.大部分HTTP文件传输请求都用于获取网页(即将网页文件下载到本地). 2.FTP主要用于匿 ...
- Mysql 别名
一.列别名 1.要给列添加别名,可以使用AS关键词后跟别名,例:SELECT [column_1 | expression] AS descriptive_name FROM table_name; ...
- P2253 好一个一中腰鼓!
题意:给你一个序列,初始是0,每次一个操作,把一个数^=1 每次求出最长01串的长度 正解:线段树(虽然暴力能过) 对于每个区间,记录三个值 lmax,以l为首的01串长度 rmax,以r为尾的01串 ...
- linux 虚拟环境问题
1.python环境 python2和python3命令用来区分python版本 pip2和pip3命令用来区分pip,你的包到底安装在哪里pip3 install xxx sudo apt inst ...
- angularJs获取复选框中id 进行批量删除
主要思路:我们需要定义一个用于存储选中 ID 的数组,当我们点击复选框后判断是选择还是取消选择,如果是选择就加到数组中,如果是取消选择就从数组中移除.在点击删除按钮时需要用到这个存储了 ID 的数组. ...
- vue.js组件之j间的通讯二
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...