随笔分类 - Oracle
Oracle中的那些事情
摘要:1.描述 在Oracle的存储过程中,我们可以直接将游标遍历出来的数据,直接使用replace函数进行字符替换,无需将其写在select语句中 2.实战演练 (1)建表语句 create table t(id number, name varchar2(10),tel varchar2(11));
阅读全文
摘要:在Oracle中,PL/SQL语法并没有提供指定步长的语法。PL/SQL的for循环中,步长总是1,如果希望一个循环体能够以我们想要的步长值来进行递进,则有以下两种实现方式。 1.使用MOD函数 BEGIN for i in 1..10 LOOP if mod(i, 2) = 0 then DBMS
阅读全文
摘要:GOTO可以无条件的跳转到同一个PL/SQL块中其他可执行语句处。 1.常见格式 GOTO label_name 2.实战演练 BEGIN GOTO cmd1; DBMS_OUTPUT.PUT_LINE('i am cmd.'); <<cmd1>> DBMS_OUTPUT.PUT_LINE('i a
阅读全文
摘要:IF语句可以有3种使用方法,如下表: |IF类型|特点| | | | |IF THEN END IF;|这是if最简单的语法。IF与WHEN之间的条件决定了在WHEN和END IF之间一系列语法是否会被执行。如果条件部分的求值结果是FALSE或者NULL,这些代码就不会被执行。| |IF THEN
阅读全文
摘要:写在最前面:在Oracle 11g中一个空字符串和零个字符是没有区别的。 今天在使用Oracle编写PL/SQL程序的时候,发现一个问题,我的表中本身不是空字符串,但是在使用if语句判断(字段 <> '')的时候,if语句竟然不会生效,很是纳闷! 后来查询相关资料发现:Oracle建议您不要将空字符
阅读全文
摘要:1.概述 包用于将相关的对象组合在一起,一个任务,需要多个函数或者过程协同才能完成,这时,可以这些函数和存储过程都放在一个包下,方便函数和存储过程的管理,提高程序的性能,在第一次用的时候,会全部读入内存,下次用直接从内存取,加强模块化。 包分为两部分: 1.包头(类似java接口) 包的规范,只包含
阅读全文
摘要:1.常用set设置 set heading off -- 不显示每行的列名 set pages 0 -- 不进行分页显示 set feed off -- 不显示sql语句的运行结果(selected N rows) set echo off -- 是否显示脚本中正在执行的SQL语句 on 显示 of
阅读全文
摘要:1.问题描述 现在新建了一个用户logan,无法正常使用SQL*Plus命令,经过查询后,发现需要配置Oracle环境变量信息 2.解决办法 进入到Oracle用户家目录下/home/oracle,使用命令cat .bash_profile查看其中的内容,将其中与Oracle相关的变量信息copy到
阅读全文
摘要:1.需求描述 在db2中,我们要实现截取后2位,使用right函数即可 select right('abcdef',2) from sysibm.dual; 输出结果:ef 但是在Oracle中是没有right这个函数的 2.解决办法 既然在Oracle中没有这个语法,那么我们可以使用substr函
阅读全文
摘要:现有emp表,表结构如下: 1.需求描述 现在需要将表emp的字段按照字段顺序依次拼接为一行,最终效果如下: 2.实现方法 2.1 通过listagg函数实现 select a.table_name,listagg(column_name,',') within group(order by col
阅读全文
摘要:1.理论部分 事务会把表示工作逻辑单元的SQL语句集成起来。 (1)commit 当数据库提交COMMIT语句的时候,这个事务就结束了,并且如下结果会发生: 事务所做的所有工作都会永久化 其他用户可以看到这个事务所做的数据变更 该事务拥有的所有锁被释放 commit语句的语法如下: COMMIT [
阅读全文
摘要:[toc] 1.替代变量 通常而言,替代变量的前缀是 区别: & 用来创建一个临时变量,每当遇到这个临时变量时,都会提示你输入一个值 &&用来创建一个持久变量,当用&&命令引用这个变量时,不会每次遇到该变量就提示用户键入值,而只是在第一次遇到时提示一次 2.范例 此范例运行结果如下: 在上图中我们可
阅读全文
摘要:[TOC] 1.描述 在使用SQL进行查询的时候,通常我们为了省事,就使用 ,这种写法本身是没问题的,但是在程序开发中不建议这么使用。 2.理由 从以下几点解释: (1)使用 ,则Oracle必须多做一步,要查阅内部系统目录以便把表中所有字段名查找出来。 (2)明确字段名,将来在表增加字段的时候,不
阅读全文
摘要:[toc] 1.游标简介 逐行处理查询结果,以编程的方式访问数据。 2.游标的类型 (1)隐式游标:在 PL/SQL 程序中执行DML SQL 语句时自动创建隐式游标,名字固定叫sql。 (2)显式游标:显式游标用于处理返回多行的查询。 (3)REF 游标:REF 游标用于处理运行时才能确定的动态S
阅读全文
摘要:[toc] 函数是可以返回值的命名的 PL/SQL 子程序。 1.语法 2.定义函数的限制 函数只能接受 IN 参数,而不能接受 IN OUT 或 OUT 参数 形参不能是 PL/SQL 类型,只能是数据库类型 函数的返回类型也必须是数据库类型 3.访问函数的两种方式 使用 PL/SQL 块 使用
阅读全文
摘要:[toc] 1.语法 2.过程参数的三种模式 IN 用于接受调用程序的值 默认的参数模式 OUT 用于向调用程序返回值 IN OUT 用于接受调用程序的值,并向调用程序返回更新的值。 3.实战案例 3.1 in参数使用:按要求打印行 写一个存储过程,输出: \ \ \ \ \ 实现代码: 执行结果:
阅读全文
摘要:[toc] 1.PL/SQL简介 1)PL/SQL 是过程语言(Procedural Language)与结构化查询语言(SQL)结合而成的编程语言 2)PL/SQL 是对 SQL 的扩展 3)支持多种数据类型,如大对象和集合类型,可使用条件和循环等控制结构 4)可用于创建存储过程、触发器和程序包,
阅读全文
摘要:[toc] 当优化器解析含表连接的目标SQL时,它除了会根据目标SQL的SQL文本的写法来决定表连接的类型之外,还必须决定如下三件事情才能得到最终的执行计划。 (1)表连接顺序 不管目标SQL中有多少表进行连接,Oracle在实际执行该SQL时都只能先两两表做表连接,在依次执行这样的两两表连接过程,
阅读全文
摘要:[toc] 对于优化器而言,他在解析目标SQL,得到执行计划时至关重要的一点是决定访问数据的方法。 Oracle访问表中数据有两种方法: 直接访问表 先访问索引,再回表 如果目标SQL通过访问索引就能得到所需要的数据,那么就不需要再回表了。 1、直接访问表 Oracle数据库直接访问表中数据的方法有
阅读全文
摘要:[toc] 1.日志文件的概念 Oracle数据库有联机重做日志,这个日志是记录对数据库所做的修改,包括对表作的数据改变,对系统做的改变等。可以使用它,来维护数据的完整性,以及进行数据库的恢复,可以进行日志挖掘。 日志文件分为在线日志文件和归档日志文件两类。归档日志文件是在线日志文件的历史备份。 日
阅读全文