Oracle 将一个查询结果值动态赋值给一个变量
在写存储过程或函数时,经常需要用到中间变量,需要将一些值做临时存储。
可以通过动态变量方式来赋值。如下:
- FUNCTION YOUR_FUN (VAL1 IN NVARCHAR2)
- RETURN NCLOB
- IS
- PRAGMA AUTONOMOUS_TRANSACTION;
- MID_ID NUMBER (19); --中间变量
- BEGIN
- SELECT ID
- INTO MID_ID
- FROM TABLE1
- WHERE A = 1;
- END;
以上语句在条件A=1满足时,能够成功赋值给变量MID_ID,但如果没有查询到值时,该语句在执行时会报错(因为未查询到值)
可以在查询值外加入MAX() 或 MIN() 如下处理:
- FUNCTION YOUR_FUN (VAL1 IN NVARCHAR2)
- RETURN NCLOB
- IS
- PRAGMA AUTONOMOUS_TRANSACTION;
- MID_ID NUMBER (19); --中间变量
- BEGIN
- SELECT MAX(ID)
- INTO MID_ID
- FROM TABLE1
- WHERE A = 1;
- END;
如果条件A=1不满足时,会返回一个空值,不会出现报错情况。这种应用在某种场景时很有用:当需要根据获得的动态变量值做分支判断时。
参考以下代码:
- FUNCTION YOUR_FUN (VAL1 IN NVARCHAR2)
- RETURN NCLOB
- IS
- PRAGMA AUTONOMOUS_TRANSACTION;
- MID_ID NUMBER (19); --中间变量
- BEGIN
- SELECT MAX(ID)
- INTO MID_ID
- FROM TABLE1
- WHERE A = 1;
- IF MID_ID > 0
- THEN
- --一些逻辑处理
- COMMIT;
- ELSE
- --另一些逻辑
- COMMIT;
- END IF;
- END;
如果以上代码变量赋值不加入MAX(ID)时,当A=1的条件不满足时,动态赋值语句会报错,执行将中断,将不会走到 IF -ELSE 分支判断。
以上是一个Oracle存储过程使用中的一个技巧,留意下。
Oracle 将一个查询结果值动态赋值给一个变量的更多相关文章
- C# 实体/集合差异比较,比较两个实体或集合值是否一样,将实体2的值动态赋值给实体1(名称一样的属性进行赋值)
/// <summary> /// 实体差异比较器 /// </summary> /// <param name="source">源版本实体& ...
- grep查询文本:问一个简单shell问题,将grep的输出赋值给一个变量
问一个简单shell问题,将grep的输出赋值给一个变量 用grep命令得到的输出赋值给一个变量不成功. grep命令如下: 代码: $ grep -c '^abc' file.txt 输出为22,表 ...
- ajax向后台传递数组参数并将后台响应的数据赋值给一个变量供其它插件使用
1.在js中封装ajax向后台传递数组参数函数 //combogrid * * @Description 封装ajax向后台传递数组参数并将后台响应的数据赋值给一个变量方便其他插件使用该数据函数 * ...
- sql server 查询出的结果集,拼接某一列赋值给一个变量
现有表Area 如下: SELECT [Areaid] ,[Areaname] ,[Areapid] FROM [Northwind].[dbo].[Area] 查询结果如下图: 需求:用 “-“ ” ...
- Oracle PLSQL Demo - 31.执行动态SQL拿一个返回值
DECLARE v_sql ) := ''; v_count NUMBER; BEGIN v_sql := v_sql || 'select count(1) from scott.emp t'; E ...
- shell 脚本中将输出内容赋值给一个变量时的换行问题
for ((i=0; i<4; i++) do ....... done 如果使用 echo $a 输出变量,则变量中的 换行都会被忽略掉,所有内容输出到一行 而使用 echo "$a ...
- php 可以动态的new一个变量类名
<?PHPheader("content-type:text/html; charset=utf-8");//echo ucfirst('a b'); class Stude ...
- go 把固定长度的数字写入字节切片 (byte slice),然后从字节切片中读取到并赋值给一个变量:
// write v := uint32(500) buf := make([]byte, 4) binary.BigEndian.PutUint32(buf, v) // read x := bin ...
- python操作oracle数据库-查询
python操作oracle数据库-查询 参照文档 http://www.oracle.com/technetwork/cn/articles/dsl/mastering-oracle-python- ...
随机推荐
- node 链接mysql(自动链接)
Node.js与MySQL交互操作有很多库 felixge/node-mysql 常用 cnpm i mysql --save dev 1.打开mysql 必须要有,我这里面用的是wamp.可视化用的 ...
- Landsat8 卫星数据下载
具体参考 https://www.ixxin.cn/2016/11/27/landsat8freedata/
- WEB服务器----Apache 安装配置
1.官网下载需要的安装包(包括主安装包和依赖包的下载)可以直接使用Linux的wget进行下载: httpd安装包下载地址:http://mirrors.hust.edu.cn/apache//htt ...
- Jenkins 利用Dashboard View插件管理任务视图
利用Dashboard View插件管理任务视图 by:授客 QQ:1033553122 步骤 1. 安装Dashboard View插件 说明: 如果无法在线安装,可以选择本地上传方式安装 附 ...
- loadrunner 脚本开发-int型变量和字符串的相互转换
脚本开发-int型变量和字符串的相互转换 by:授客 QQ:1033553122 字符串转化为int型变量 Action2() { int j = 0; j = atoi("12345&qu ...
- spring 引用Bean的属性值
引用Bean的属性值 从Spring3.0开始,可以通过#{beanName.beanProp}的方式方便地引用另一个bean的属性值1.不需要使用PropertyPlaceholderConfigu ...
- scrapy系列(二)——startproject、genspider创建项目与模板使用
阅读本文之前需要安装scrapy,如果你还没有安装该框架,那么可以看之前一篇文章scrapy1.2windows安装. 现在默认大家都已经成功的安装了scrapy可以开始大展身手了.本文主要讲的是新建 ...
- SQL Server的一个不显眼的功能 备份文件的分割
SQL Server的一个不显眼的功能 备份文件的分割 当完整备份数据库的时候,我们有时候可能会遇到一种极端情况,比如服务器上C,D,E三个盘符都只剩下5G空间了 但是如果要完整备份业务库需要12G的 ...
- java调用python的惨痛史(无法获取环境变量)
环境:java,was,python2.6,红帽linux,oracle,python用cx_Oracle 事情是这样的,有个需求,需要对数据库进行处理,简单说就是把数据取出来,用pyt ...
- Android ListView在增加HeaderView之后使用getLocationInWindow和getLocationOnScreen获得值不正确的解决方法
近日遇到一个很恶心的问题,把解决方法放到空间里来分享给大家: 问题发生的条件: 1)ListView 控件中使用addHeaderView,为其添加了一个header view.(基本常识:heade ...