博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SELECT查出多行 INTO 单行上会把第一行赋值到单行上
阅读量:6657 次
发布时间:2019-06-25

本文共 1180 字,大约阅读时间需要 3 分钟。

hot3.png

--关于SELECT INTO 一直以来的错误认知: --如果查出来多条数据,不仅会抛出异常,而且会把第一行数据赋值上去,直接上例子

CREATE TABLE  SELECT_INTO_TEST (T_ID NUMBER,T_NAME VARCHAR2(10),T_LOCATION VARCHAR2(50));INSERT  INTO SELECT_INTO_TEST SELECT 1,'RICK','AMERICAN'  FROM DUALUNION ALLSELECT 2,'SON','AMERICAN' FROM DUAL;COMMIT;
SELECT * FROM  SELECT_INTO_TEST;

查询出结果为:

输入图片说明

--例子一:查出多条数据会自动填充第一行,所以输出为: ** V_ID=1V_NAME=RICKV_LOACTION=AMERICAN**

DECLARE V_ID NUMBER;V_NAME VARCHAR2(10);V_LOCATION VARCHAR2(50);BEGINBEGIN  SELECT T_ID,T_NAME,T_LOCATION   INTO V_ID,V_NAME,V_LOCATION FROM SELECT_INTO_TEST;  EXCEPTION WHEN OTHERS THEN  NULL;END; DBMS_OUTPUT.PUT_LINE('V_ID='||V_ID||'V_NAME='||V_NAME||'V_LOACTION='||V_LOCATION);END;
--这样写才比较正确 :如果查出多条数据,抛出异常,清空表数据DECLARE V_ID NUMBER;V_NAME VARCHAR2(10);V_LOCATION VARCHAR2(50);BEGINBEGIN  SELECT T_ID,T_NAME,T_LOCATION   INTO V_ID,V_NAME,V_LOCATION FROM SELECT_INTO_TEST;  EXCEPTION WHEN OTHERS THEN  V_ID := NULL;  V_NAME := NULL;  V_LOCATION := NULL;END; DBMS_OUTPUT.PUT_LINE('V_ID='||V_ID||'V_NAME='||V_NAME||'V_LOACTION='||V_LOCATION);END;

总结: 之前一直认为如果查出多条 INTO 到单行上,会直接报错,赋值为空,这一直是一个认知错误,如果多条INTO到单行,会把第一行数据赋值上。 --所以需要再 EXCEPTION 中清空数据。

转载于:https://my.oschina.net/u/2525142/blog/607466

你可能感兴趣的文章
stp 总结
查看>>
Java本地文件操作(五)遍历文件夹
查看>>
BGP学习笔记
查看>>
mysql字段加密
查看>>
linux 磁盘分区(一)
查看>>
在虚拟机中的域环境下批量安装部署软件(第三节)
查看>>
java基础(jdbc上)
查看>>
python文件读写,以后就用with open语句
查看>>
10.19 iptables规则备份和恢复 firewalld的9个zone firewalld关
查看>>
自然语言处理NLP(三)
查看>>
苏州大学GCT
查看>>
go语言碎片整理之 time
查看>>
spring mvc 返回json 数据
查看>>
区块链教程Fabric1.0源代码分析Ledger blkstorage block文件存储
查看>>
JAVAScript强大的框架:Jquery(一)
查看>>
网络技术工作在哪里
查看>>
玩转Linux - shell 编程基础(二)
查看>>
我的友情链接
查看>>
马哥2016全新Linux+Python高端运维班第三周作业
查看>>
!.NET 4.0并行计算深入解读(FOR,FOREACH,Invoke)
查看>>