oracle
文章平均质量分 51
罗小树
这个作者很懒,什么都没留下…
展开
-
oracle如何替换掉unicode字符
一、问题描述执行sql:select cm.custname, replace(cm.custname, UNISTR('\FEFF'), '') from myuser cm;这行sql已经说明了如何换掉unicode字符,配合replace、unistr就行了说下有特殊unicode字符会带来什么问题:当你执行查询语句时,会发现select cm.custname from myuser cm where cm.custname = '许婷';查不出结果(但从表.原创 2021-05-19 14:17:40 · 1090 阅读 · 0 评论 -
Oracle sql技巧--替换字段中的所有空格
最近需要进行数据库迁移,原来在oracle中的表里存储的数据带有空格,新表里存的数据不带空格举例:原来是"1, 2, 3, " 现在存的是"1,2,3"解决方法如下:方法一:使用replace函数select replace('1, 2, 3 ', ' ', '') from dual;方法二:使用regexp_replace函数select regexp_replace('1, 2, 3 ', '\s+', '') from dual;...原创 2020-09-04 13:56:17 · 2917 阅读 · 0 评论 -
Oracle sql技巧--把逗号分隔的字段列根据主键来拆分(类似wm_concat的逆操作)
一、需求说明有如下表sys_team现在需要根据这个表查询出下面的结果(只要101对应21、1201,105对应355、466,拆分后的数据行的顺序没有关系,因为后面可以通过order by再做排序)二、代码实现select distinct t.l_team_id as teamList, regexp_substr(t.vc_user_list, '[^,]+'...原创 2020-04-22 16:26:36 · 770 阅读 · 0 评论 -
oracle日期格式数据操作
以下假定sysdate为2019-12-30 10:10:101. trunc作用:对日期进行截取说明:(1)trunc截取完date格式的数据后,依然是date格式select trunc(sysdate, 'yyyy') from dual; -- 2019-01-01 00:00:00对应日期select trunc(sysdate, 'mm') from dual; ...原创 2019-12-30 18:32:34 · 463 阅读 · 1 评论 -
plsql基础学习--二、PLSQL类型
标量数据类型:a.存储单一的值 b.没有内部结构基本标量数据类型:char,varchar2,long,long raw,number,binary_integer,pls_integer,boolean,date,timestamp 一、oracle数据类型1.字符数据类型:char,varchar2,long(1)当需要固定长度的字符串时,使用char数据类型c...转载 2018-09-05 13:07:49 · 1196 阅读 · 0 评论 -
plsql基础学习--三、一般变量与替代变量
一、声明PL/SQL一般变量语法:identifier datatype [not null] [:= | default expr];例:declare v_hiredate date; v_deptno number(2) not null:=0; v_location varchar2(13):='Atlanta';二、一般变量1.PL/SQ...转载 2018-09-06 23:32:26 · 2870 阅读 · 0 评论 -
plsql基础学习--五、plsql块应用
一、pl/sql块结构1.语法:declare --声明 variables,cursors,user-defined exceptionsbegin --执行部分 sql statements pl/sql statementsexception --异常处理部分 actions to perform when errors occurend;2....转载 2018-09-19 09:17:34 · 1113 阅读 · 0 评论 -
[oracle自定义函数]根据数据库表生成对应java代码的实体类属性
一、问题描述现有一张学生表(student),需要编写一个函数实现下图的输出:(1)暂时不考虑数据库表字段类型和java代码中字段类型的对应关系,一律用String(这个后续在函数中添加判断就行)(2)能获取字段名,及字段注释二、代码实现create or replace type "T_RET_TABLE" as table of varchar2(1000);...原创 2018-10-02 21:33:14 · 1586 阅读 · 0 评论 -
plsql基础学习--八、游标
游标(cursor)概述:1.作用:逐行处理查询结果,以编程的方式访问数据2.类型:隐式游标(在plsql程序中执行DML SQL语句时,自动创建隐式游标)、显式游标(用于处理返回多行的查询)、ref游标(用于处理运行时才能确定的动态sql查询的结果)3.定义:是一个指向上下文区的句柄或指针,可以用来控制上下文区和处理语句在上下文区会发生的事情(一)隐式游标说明:1...转载 2018-12-19 22:04:42 · 593 阅读 · 0 评论 -
[oracle存储过程]批量创建sequence
如:在当前用户下创建两个sequence,seq_student和seq_score思路:使用v_array存放需要创建的sequence的名称集合--批量创建sequencedeclare type v_array is varray(2) of varchar2(100); v_index number; v_arr v_array:=v_array('student'...原创 2018-09-30 17:19:33 · 1276 阅读 · 0 评论 -
plsql基础学习--四、常用系统函数
SQL函数Oracle提供一系列用于执行特定操作的函数SQL函数带有一个或多个参数以下SQL函数的分类:(1)单行函数(2)分组函数(3)分析函数一、单行函数分类1.单行函数对于从表中查询的每一行只返回一个值2.可以出现在select子句中和where子句中3.单行函数可以大致划分为:日期、数字、字符、转换、其他函数二、日期函数1.概述:日期函数...转载 2018-09-11 12:46:17 · 785 阅读 · 0 评论 -
oracle 11g用exp无法导出空表的解决方案
问题原因:oracle 11g中有个新特性,当表无数据时,不分配segment,以节省空间。所以我们用exp导库时,无法导出空表。解决方法:1.处理现有空表,让其能导出2.设置参数,让后续新建的空表也能正常导出步骤:1.查询当前数据库所有空表 ,并分配segment;使用以下语句修改空表设置的sqlselect 'alter table '||table_name||'...转载 2018-08-17 10:36:00 · 280 阅读 · 0 评论 -
plsql基础学习--一、sql语言基础
概述1.数据定义语言DDL:用来定义和管理数据库中的对象DDL主要的语句有:create table /*创建表*/alter table /*修改表的属性*/drop table /*删除表*/2.数据操作语言DML:用来操作数据库中的对象和数据,是T-SQL中最常用的部分DML主要的语句有:select /*从一个表或多个表中检索数据*/delete /*从...转载 2018-08-22 21:46:09 · 968 阅读 · 0 评论 -
ORA-12514 : TNS:监听程序当前无法识别连接描述符中请求的服务(连接linux上的数据库)
解决方法:1.修改listener.ora(我的oracle是安装在centos6.10 x64上的,安装步骤参考https://blog.csdn.net/u011391839/article/details/76566316,我大概记得是装在/usr/local下面的)标红部分是需要加进去的部分,说明一下SID_LIST_LISTENER = (SID_LIST =...原创 2018-08-19 18:21:47 · 7339 阅读 · 0 评论 -
ORA-01756: 引号内的字符串没有正确结束
我在运行sqlplus "jbit/jbit@orcl" @merge.sql时报了错ORA-01756: 引号内的字符串没有正确结束解决方法:如果确认没有语法错误,那么就是sql文件编码的问题,由于oracle是用Java写的,所以我们在写sql脚本时应该保存为ANSI编码(另存为,选择编码为ANSI即可)参考链接:https://www.2cto.com/database/...转载 2018-08-22 11:30:12 · 7770 阅读 · 0 评论 -
plsql中如何一次性将查询语句中的多个值赋给对应的变量
create or replace function "FIND_STUDENT_BYID"(studentId in number)return varchar2 is studentName varchar2(500); --学生姓名 studentAge number; --学生年龄begin --根据学生id查询对应的学生信息‘ sel...原创 2018-08-08 17:16:08 · 7151 阅读 · 0 评论 -
如何向Oracle数据库中插入带特殊符号“&”的数据
insert into p_product(productId, productName) values(1, '手机&电脑');这条插入语句在plsql中不能正常执行,会弹出下图所示的框:解决:将语句改成下面的即可正常执行insert into p_product(productId, productName) values(1, '手机'||'&'||'电脑...转载 2018-08-15 21:22:00 · 2147 阅读 · 0 评论 -
ORA-01017 invalid username/password;logon denied (密码丢失解决方案)
1.先确认是否输错用户名和密码,我碰到的就是没输错用户名密码,但就是登不上的情况(输入system/system)2.进行密码重置(1)先看下sqlnet.ora文件,如果是SQLNET.AUTHENTICATION_SERVICES= (NONE) ,就修改为SQLNET.AUTHENTICATION_SERVICES= (NTS)(2)在sql*plus中执行如下命令:...转载 2018-08-15 21:14:44 · 10420 阅读 · 0 评论 -
ORA-01502: 索引''或这类索引的分区处于不可用状态
参考https://blog.csdn.net/hawksoft/article/details/52687421,select index_name from user_indexes where status = 'UNUSABLE';然后拿到index_name,重建失效索引alter index 索引名称 rebuild;发现数据库里有90多条失效索引,如果一个一个拼的...原创 2018-10-10 14:20:06 · 2043 阅读 · 0 评论 -
EXP-00091: 正在导出有问题的统计信息 错误解决
EXP-00091: 正在导出有问题的统计信息1.原因分析:网上查找后发现,原因在于客户端和服务端的oracle字符集不同现在服务端的字符集为ALU32UTF8,客户端字符集为ZHS16GBK,两边字符集需要进行统一。2.解决方法:为了能更好的支持中文,我选择把服务端的字符集改为和客户端一致,均为ZHS16GBK。转换步骤见:https://www.cnblogs.com/...原创 2018-11-01 19:59:08 · 6942 阅读 · 0 评论 -
Oracle 记一次sql优化(有关子查询和关联查询)
最近同事有条查询sql,需要做下优化。其实最后得出的结论,就是关联查询速度快于子查询写这篇的目的主要是把尝试过的方法给记录下,同时复习下有一段时间没有用过的oracle存储过程、自定义函数、包的写法一、问题说明为了说清楚问题的核心,我把跟业务逻辑有关的东西去掉了,简单说下需要查的东西:表结构:现在需要查询各班级下的所有学生的名称(两个字段:班级id classId,学...原创 2019-05-30 18:57:32 · 3775 阅读 · 0 评论 -
start with connect by prior 递归查询用法
原文链接:https://www.cnblogs.com/benbenduo/p/4588612.html对应的B树结构为:现在要求给出其中一个节点值,求其最终父节点。以7为例:start with子句:遍历起始条件,如果要查父节点,这里就用子节点的列;如果要查子节点,就用父节点的列这里查的是父节点,起始条件用subid(即子节点的列)connect by子句:连接...转载 2019-04-16 16:03:06 · 371 阅读 · 0 评论 -
[oracle存储过程]更改字段类型
一、问题说明:在项目开发过程中,有时需要将多张表做union操作,会发现由于个别表的字段不一致,造成union语句查询报错。这时有以下的解决方法:1.较为简单:将少量的不一致字段,使用to_number、to_date等方式作下处理。这样能够确保查询操作正常2.较为复杂:更改少量不一致字段的字段类型,与多数表中的字段类型保持一致简单的方法就不用说了,下面看下复杂的情况该如何操作。接...原创 2019-01-09 22:10:17 · 1583 阅读 · 0 评论 -
[oracle package]sequence处理(批量创建、删除sequence,将sequence恢复至指定值)
之前对于oracle的包不太熟悉,最近深入学习了plsql中的包。在做项目过程中,操作数据库时,存在大量重复的工作,正好写个package来巩固下所学。一.先对写的东西碰到的问题作下说明,也方便以后自己回顾解决问题的过程:1.如何给存储过程或函数传递数组参数https://blog.csdn.net/zzkongfu/article/details/7480958https://b...原创 2019-01-09 20:21:51 · 1338 阅读 · 0 评论 -
如何在plsql中调试带有pipelined的函数
问题说明:如果直接右键点击函数,选择“Test”,然后输入参数,运行会发现行不通(row_split函数见https://blog.csdn.net/u010999809/article/details/79825731) 解决方法:像下面这样写,就能够进行断点调试了(参考链接:https://stackoverflow.com/questions/35128472/how-t...转载 2019-01-09 19:59:06 · 829 阅读 · 0 评论 -
oracle导出导入数据遇到的坑
在进行oracle导出导入数据时,遇到一些坑,总结下:1.exp-00056 1455原因:有编译未通过的视图,重新编译或者将其删除(https://blog.csdn.net/dragoo1/article/details/54587381)2.oracle导出后发现少表,同时在查空表数量的时候发现num_rows=0查不到结果原因:num_rows=0查不到结果是因为use...原创 2019-01-09 19:44:19 · 1257 阅读 · 0 评论 -
oracle11g安装时遇到的坑总结
在生产环境安装oracle遇到一些坑,总结下:windows下安装oracle11g报“设置注册值出现错误,权限被拒绝”(http://home.bdqn.cn/thread-61328-1-8.html)。网上找了一下,有些说直接忽略掉,之后就安装成功了。但是我在点完“忽略”后,之后仍然安装失败,oracle登录不了。安装步骤没什么问题,最后发现生产环境上开了杀毒软件。然后重新再...原创 2019-01-09 19:21:45 · 1585 阅读 · 0 评论 -
oracle学习资源整理
oracle函数 https://docs.oracle.com/cd/E18283_01/server.112/e17118/functions.htm#i1482196plsql手册 https://docs.oracle.com/cd/E18283_01/appdev.112/e17126/toc.htm原创 2019-01-08 14:43:37 · 260 阅读 · 0 评论 -
plsql基础学习--十一、包与子程序
一、概述1.介绍:(1)PL/SQL为了满足程序模块化的需要,除了块(block)和子程序结构外,还引入了包的构造(2)程序包是对相关过程、函数、变量、游标和异常等对象的封装(3)程序包由规范和主体两部分组成规范:声明程序包中公共对象。包括类型、常量、异常、游标规范和子程序规范等主体:声明程序包私有对象和实现在包规范中声明的子程序和游标2.优点模块化,更轻松的应用程...转载 2018-12-23 23:46:38 · 319 阅读 · 0 评论 -
plsql基础学习--十、自定义函数
一、概述1.函数是可以返回值的命名的plsql子程序2.oracle的函数是一个独有的对象,它也是由plsql语句编写而成。但不同之处在于:函数必须返回某些值,而存储过程可以不返回任何值。3.创建函数的语法:CREATE [OR REPLACE] FUNCTION<function name> [(param1,param2)]RETURN <data...转载 2018-12-23 22:48:53 · 3566 阅读 · 0 评论 -
plsql基础学习--九、存储过程
概述:1.存储过程是用pl/sql语言编写的能完成一定处理功能的存储在数据库字典中的程序2.命名的plsql块,编译并存储在数据库中3.存储过程的各个部分:声明部分、可执行部分、异常处理部分(可选)4.存储过程的分类:带参存储过程、不带参存储过程5.优点:模块化:将程序分解为逻辑模块可重用性:可以被任意数目的程序调用可维护性:简化维护操作安全性:通过设置...转载 2018-12-23 19:47:16 · 608 阅读 · 0 评论 -
plsql基础学习--六、控制程序流
控制结构概述:plsql支持*的流程控制结构1.条件控制(if语句,case语句)2.循环控制(loop循环,while循环,for循环)3.顺序控制(goto语句,null语句)一、条件控制1.if语句有三种形式:if-then,if-then-else,if-then-elsif查找emp中工资所有小于2000的员工,然后给他们的工资添加200如果是...转载 2018-12-17 23:45:11 · 295 阅读 · 0 评论 -
plsql基础学习--七、异常处理
一、预定义异常二、用户定义异常1.声明用户定义异常declare my_error exception;2.触发用户定义异常 raise my_error3.处理用户定义异常4.引发应用程序错误(1)raise_application_error过程用于创建用户定义的错误信息可以在可执行部分和异常处理部分使用错误编号必须结...转载 2018-12-19 21:19:43 · 239 阅读 · 0 评论 -
oracle plsql基础学习
为了学习plsql基础语法,记录了一些简单的例子循环(1)for循环declare l_start number:=1; l_end number:=10;begin for i in l_start .. l_end loop dbms_output.put_line('i ======= ' || i); end loop;end; ...原创 2018-08-15 21:06:04 · 240 阅读 · 0 评论 -
项目部署中遇到的坑
做java开发一年零两个月,发现自己对于项目部署这一块还很模糊。于是趁空闲时间,在阿里云上买了个服务器,试着把平时写的项目部署下,以便对部署生产环境有更为细致深入的理解。最终结果是部署成功了,下面我把这一过程中遇到的坑记录下,避免以后重蹈覆辙,方便自己也方便他人。一、购买云服务器二、安装oracle数据库由于安装的是服务器版的centos,服务器上通常不会安装图形界面。在字符界面下...原创 2018-08-06 21:49:06 · 578 阅读 · 0 评论 -
oracle创建一张与其他表相同表结构的表
oracle创建一张与其他表相同表结构的表--这种构造与现存表相同结构的表,是不会将comment带过来的--A.只是建立t1表,与emp表结构相同,并不添加数据create table t1 as select * from scott.emp where 1=0; --A.只是建立t1表,与emp表结构相同,添加数据create table t1 as select *...转载 2018-07-27 09:32:11 · 23905 阅读 · 0 评论 -
[oracle自定义函数]根据年份查询指定季度的最后一天
通过sql查询指定年份下给定季度的最后一天,如传入2018年的1季度,则返回2018-03-31这个在oracle中没有特定的函数可以直接实现这个功能 select add_months(trunc(to_date('2018-01-01', 'yyyy-mm-dd') + 1, 'q'), 1 * 3) - 1 as resultDay from dual; 把以上的s...原创 2018-04-14 19:27:45 · 2183 阅读 · 2 评论 -
Oracle sql中的单引号
关于sql中的单引号,看以下几个例子:例1:select '张三' as sname from dual;例2:select '''张三''' as sname from dual;例3:select '''''张三''''' as sname from dual;例4:将由单引号包裹的张三,改为由双单引号包裹select replace('原创 2018-04-14 19:17:10 · 2345 阅读 · 0 评论 -
[oracle自定义函数]生成复杂序列
一、问题描述现在需要生成如下图所示的序列函数的具体要求:(1)传入一个终值endNumber,使用number类型存放(2)序列中的每个数需要以何种方式重复出现(如:时间、金额或者只是单次重复出现) 重复模式titleArr,使用plsql中的自定义type来存放(这里其实是当作数组来用)(3)返回结果是一列按给定规则出现的字符串构成的结果集,使用plsql中的自定义type来存放(用到pl/sq...原创 2018-04-14 15:50:34 · 2001 阅读 · 0 评论 -
如何从oracle自定义函数中返回动态结果集
需要用到管道函数(pipelined function),具体做法可以参考https://stackoverflow.com/questions/14155844/return-resultset-from-functionhttp://www.oracle-developer.net/display.php?id=422https://stackoverflow.com/questions/47...转载 2018-04-01 11:33:25 · 2800 阅读 · 0 评论