pl/sql里的exists和in的差别】的更多相关文章

项目中有个需要需要如下pl/sql(数据库是MariaDB) ) AS small FROM cmp_ent_main a WHERE createTime<'2016-9-21' ,,) ) ; 执行时发现耗时近50秒,这是测试环境啊, 表cmp_ent_main,pk是id,有74836条记录:表cmp_ent_service_config,pk是entId和serviceType,有2254条记录,并不多. explain看一下执行计划: 说实话,mysql不熟,也并没看出什么门道. 经过…
在PL/SQL Developer里直接往表里插入日期格式的数据时,经常会出现" is not a valid date and time"的错误,这是因为Oracle的日期格式和操作系统的日期格式不符,只需更改操作系统的日期格式即可. win10下的操作: 点击右下角的日期,点"日期和时间设置",在格式里点"更改日期和时间格式",然后酱紫设置就OK了: 重启PL/SQL Developer,再次插入日期格式数据成功.…
系统要求进行SQL优化,对效率比较低的SQL进行优化,使其运行效率更高,其中要求对SQL中的部分in/not in修改为exists/not exists 修改方法如下: in的SQL语句 SELECT id, category_id, htmlfile, title, convert(varchar(20),begintime,112) as pubtime FROM tab_oa_pub WHERE is_check=1 and category_id in (select id from…
怎么写了一个语句带出这样的结果. 语句: if exists (select * from sysdatabases where name='omni') then 结果: ERROR 位于第 4 行: ORA-06550: 第 4 行, 第 6 列: PLS-00204: 函数或伪列 'EXISTS' 只能在 SQL 语句中使用 ORA-06550: 第 4 行, 第 3 列: PL/SQL: Statement ignored FT死了,难道不能用这个函数吗?应该可以吧.另外,感觉用orac…
[顶]ORACLE PL/SQL编程详解之二: PL/SQL块结构和组成元素(为山九仞,岂一日之功) 继上四篇:ORACLE PL/SQL编程之八:把触发器说透                ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)                [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到) [推荐]ORACLE PL/SQL编程之五:异常错误处理(知已知彼.百战不殆)  昨天与我的一个朋友聊天,他可是技…
ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下对ORACLE数据库进行访问.由于该语言集成于数据库服务器中,所以PL/SQL代码可以对数据进行快速高效的处理.除此之外,可以在ORACLE数据库的某些客户端工具中,使用PL/SQL语言也是该语言的一个特点.本章的主要内容是讨论引入PL/SQL语言的必要性和该语言的…
PL/SQL程序设计基础 一.PL/SQL块结构 前边我们已经介绍了PL/SQL块的结构,再来回顾一下: DECLARE /* * 声明部分——定义常量.变量.复杂数据类型.游标.用户自定义异常 */ BEGIN /* * 执行部分——PL/SQL语句和SQL语句 */ EXCEPTION /* * 异常处理部分——处理运行异常 */ END; /*块结束标记 */ 要实现PL/SQL程序设计,先介绍如下的基本内容: 二.标识符 PL/SQL程序设计中的标识符定义与SQL的标识符定义的要求相同:…
原文:[顶]ORACLE PL/SQL编程详解之二:PL/SQL块结构和组成元素(为山九仞,岂一日之功) [顶]ORACLE PL/SQL编程详解之二: PL/SQL块结构和组成元素(为山九仞,岂一日之功) 继上四篇:ORACLE PL/SQL编程之八:把触发器说透                ORACLE PL/SQL编程之六:把过程与函数说透(穷追猛打,把根儿都拔起!)                [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到) [推荐]…
一.PL/SQL块结构 前边我们已经介绍了PL/SQL块的结构,再来回顾一下: DECLARE /* * 声明部分——定义常量.变量.复杂数据类型.游标.用户自定义异常 */ BEGIN /* * 执行部分——PL/SQL语句和SQL语句 */ EXCEPTION /* * 异常处理部分——处理运行异常 */ END; /*块结束标记 */ 要实现PL/SQL程序设计,先介绍如下的基本内容: 二.标识符 PL/SQL程序设计中的标识符定义与SQL的标识符定义的要求相同: 标识符名第一个字符必须为…
原帖地址:http://blog.csdn.net/chenjinping123/article/details/8737604 ORACLE PL/SQL编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下对Oracle数据库进行访问.由于该语言集成于数据库服务器中,所以PL/SQL代码可以对数据进行快速高效的处理.除此之外,可以在oracle数据库…
PL_SQL:带有分支和循环,面向过程匿名块:declare(可选,声明各种变量和游标的地方)begin(必要的,从此开始执行)exception(抓取到异常后执行的)end;[sql] view plaincopyset serveroutput on;(默认是关闭) --最简单的PL/SQL语句块 begin dbms_output.put_line('HelloWorld!'); end; --最简单的语句块 declare v_name varchar2(20); begin v_nam…
oracle instantclient basic +pl/sql 安装和配置 大家都知道,用PL/SQL连接Oracle,是需要安装Oracle客户端软件的,oracle客户端有点大,比较耗资源.其实oracle为我们提供了轻便的工具:oracle instantclient package. 使用此工具,就无需安装oracle客户端了. 如何使用呢?详细步骤如下: 1.下载oracle instantclient basic package,在oracle官网下载就可以,地址如下: htt…
原文参考:http://plsql-tutorial.com/ PL/SQL存储过程 存储过程相当于一个有名字的PL/SQL块,经过第一次编译后再次调用时不需要再次编译 创建格式: CREATE [OR REPLACE] PROCEDURE proc_name [list of parameters] IS Declaration section BEGIN Execution section EXCEPTION Exception section END; 返回值: 可有可没有 例子: 1>…
--使用pl/sql语句打印一个hello world begin   dbms_output.put_line('hello,world'); end;      但是在sqlplus里面就不一样了 首先输入 begin dbms_output.put_line('hello,world'); end; / 通过set serveroutput on / 来调用输出语句   可以通过edit命令对过程语句进行修改   name [constrant]datatype[notnull]:=|de…
一.PL/SQL 块 (一)PL/SQL 程序由三个块组成,即声明部分.执行部分.异常处理部分 PL/SQL 块的结构如下: 1.DECLARE /* 声明部分: 在此声明 PL/SQL 用到的变量,类型及游标,以及局部的存储过程和函数 */ 2.BEGIN /* 执行部分:过程及 SQL 语句 , 即程序的主要部分* 3.EXCEPTION /* 执行异常部分: 错误处理 */ 4.END; 其中 执行部分是必须的. (二)PL/SQL 块可以分为三类: 1.无名块:动态构造,只能执行一次.…
PL/SQL(Procedure Language/SQL) PL/SQL是Oracle对sql语言的过程化扩展---指在sql命令语言中增加了过程处理语句(如分支.循环等),使sql语言具有过程处理能力 在sqlplus中执行一下操作 set serveroutput on; --打开sqlplus的输出功能 一.一个完整的格式 1.只有执行体部分的结构,也就是只有begin ...end 部分 begin dbms_output.put_line('); end; / 运行后 斜杠  /  …
现象: 第一次用PL/SQL Developer连接数据库,若用sys用户登录并操作则正常,若用普通用户比如haishu登录并创建一个表则报错“动态执行表不可访问,本会话的自动统计被禁止.在执行菜单里你可以禁止统计,或在v$session,v$sesstat和v$statname表里获得选择权限. 原因分析: 从报错提示就可以看出,原因在于动态性能表相关的权限没有被授权给当前用户 解决方法一(推荐): 根据提示,在执行菜单里禁止统计,具体操作方法:在顶部的菜单中选择“工具”-->“首选项”-->…
关于PL/SQL中这三种数组的介绍,不想写了.转一篇日志吧…… 链接:http://www.blogjava.net/decode360/archive/2008/08/08/280825.html 作者:decode360 补充一点:假如从first到last的遍历过程中,存在被删除的占位符,如果使用则会报错.可用Exists(下标)的方法来判断是否存在.不能用is null 来判断…… 记录类型不能整体用null判断,我能想到并测试成功的方法是判断里面的NOT NULL字段(推荐主键)是否为…
在最近的工作中要用到存储过程和函数,索性把PL/SQL整体的看一下.之前看过基本书和园子里的博文,在这里将所学简单总结. 一.基本语句 1.大小写 2.分隔符  --  : 3.引用字符串  --  ' ' 4.括号  --  ( ) 二.数据类型 1.标量类型 1>数字类型  --  NUMBER等 2>字符类型  --  CHAR  VARCHAR 3>日期类型 --  DATE  TIMESTAMP  INTERVAL 4>行标识类型 --  ROWID  UROWID 5&…
一. Bulk 概述 本来只想测试一下Bulk Collect 和update性能的,但发现Bulk 的东西还是很多的,在OTN上搜了一些,整理如下. 1.1 Bulk Binding 和 Bulk SQL From:  http://download.oracle.com/docs/cd/E11882_01/appdev.112/e17125/adfns_packages.htm#ADFNS343 Oracle Database uses two engines to run PL/SQL b…
一.在PL\SQL语句块begin...end;中,不能直接使用select,必须与into结合查询. 例如: declare aa:=22; id2 integer; begin select * from tabname where id=aa : end;//提示错误该select语句中缺少into子句 正确:select count(*)into id2  from tabname where id=aa : 当然这样只能得到一条数据,如果需要多数据查询可以使用游标: 二.oracle循…
--数据缓存技术 --PGA和SGA---SGA:系统全局区域--PGA:Process Global Area是为每个连接到Oracle的用户进程保留的内存. ---PLSQL从PGA获取信息的速度要比从SGA快--基于PGA的缓存为改善性能提供了许多有趣的机会 --基于包的缓存--基于包的缓存使用的是包级别的一个或多个变量,而不是在包中子程序的任何子程序里声明的变量--包级别的数据会一直存在于会话的整个生命期--如果在包级别声明了一个变量,一旦给这个变量赋了值,就会一直保持这个值,直到断开连…
--所谓包,就是把一组PL/SQL的代码元素组织在一个命名空间下.--一种可以把程序或者其他的PL/SQL元素比如游标.类型.变量的组织结构在一起的结构(包括逻辑结构和物理结构)--包提供了非常重要的.独一无二的功能,包括隐藏逻辑或者隐藏数据的功能,以及定义和操作“全局”或者--会话持久数据的能力 --可以更容易地增强以及管理应用程序--整体改善应用程序性能 --改善应用或者内置的薄弱环节 --代码重新编译的需求最小化 --包的演示 --包由两个代码块组成的:规范部分(必须的)和包体部分(可选的…
LOB类型 ORACLE提供了LOB (Large OBject)类型.用于存储大的数据对象的类型.ORACLE眼下主要支持BFILE, BLOB, CLOB 及 NCLOB 类型. NCLOB 存储大的NCHAR字符数据类型.每一个变量存储大字符对象的位置,该位置指到大字符数据块.大字符对象的大小<=4GB. CLOB(Book) 存储大的字符数据类型. 每一个变量存储大字符对象的位置.该位置指到大字符数据块.大字符对象的大小<=4GB. BLOB(Photo) 存储大的二进制数据类型. 变…
Rownum 如果不是对主键排序是不会变得 -查询没有学分的学生信息 --SELECT * FROM z_student zs WHERE zs.code NOT IN (SELECT DISTINCT zsc.stu_code FROM z_stu_cour zsc) SELECT * FROM z_student zs WHERE NOT EXISTS (SELECT FROM z_stu_cour zsc WHERE zsc.stu_code=zs.code) exsits 效率极高 如果…
结构化查询语言(SQL)是第四代编程语言的典型,这种命令式的语言更像一种指令,使用它,你只需要告诉计算机“做什么”,而不用告诉计算机“怎么做”.第四代编程语言普遍具有简单.易学.能更快的投入生产等优点,但也失去了部分第三代编程语言(C,C++,Java等)的灵活性.PL/SQL 在 SQL 的基础上,保留了部分第三代编程语言特性,它主要运行在 Oracle 数据库上,它同时兼备了第四代语言简单.易用的特点,又保留了高级程序设计语言的灵活性与完整性,这使得开发人员可以只使用 PL/SQL 就能进行…
适合自己的解决方法: 排查问题: 1. 你没有安装Oracle Client软件.这是使用PL/SQL Developer的必须条件.安装Oracle Client后再重试.2. 你安装了多个Oracle Client软件.在这种情况下,PL/SQL Developer可能会选择一个不正确的Oracle Client.点击登录页面的取消,点击工具>首选项>Oracle里的链接,从目录中选择正确的Oracle Home, 重启PL/SQL Developer后再重试.3. 你使用了一个Oracl…
PL/SQL存储过程编程 /**author huangchaobiao *Email:huangchaobiao111@163.com */ PL/SQL存储过程编程(上) 1. Oracle应用编辑方法概览 答:1) Pro*C/C++/... : C语言和数据库打交道的方法,比OCI更常用; 2) ODBC 3) OCI: C语言和数据库打交道的方法,和ProC很相似,更底层,很少用; 4) SQLJ: 很新的一种用Java访问Oracle数据库的方法,会的人不多; 5) JDBC 6)…
1.通过PL/SQL 想连接别的数据库可以通过在服务名前面加上IP和左斜线来实现: 2.有时我们的IP和左斜线不用输也能连别的数据库,是因为在一个文件里配置好了.这个文件在哪里? 在这个路径下的 NETWORK/ADMIN/tnsnames.ora文件中,我们可以看到 可以看到配置文件中已经配好了远程地址和端口,以及服务名,这时我们在登录的时候,Database选择PLATFORM1,其实选的是这套配置. 3.通过sqlplus连接远程数据库的写法如下 scott/tiger@172.16.10…
dbca: 创建数据库 netca: 创建监听程序 netmgr: 配置监听服务(将数据库服务注册到监听器上) netca 与 netmgr 两步可以直接在 ORACLE_HOME/network/admin 下的 listener.ora 中添加如下代码 添加一个监听器 LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = PC-20160403KSYS)(PORT = 1521)) ) ADR_BASE_LISTENER =…