oracle函数

Oracle中的方法

三世轮回 提交于 2020-01-16 19:39:29
方法 方法中必须有一个返回值,暂时还不会编写聚合方法 select fn_simpleTest ( '0507' ) from dual ; CREATE OR REPLACE FUNCTION fn_simpleTest ( riskcode IN VARCHAR2 --险种) RETURN NUMBER IS returnNum NUMBER ; --returnNum BEGIN IF riskcode = '0507' THEN returnNum : = 10507 ; ELSIF riskcode = '0522' THEN returnNum : = 10522 ; ELSE returnNum : = 1 ; END IF ; RETURN returnNum ; END fn_simpleTest ; --字符串拼接函数 CREATE OR REPLACE FUNCTION fn_simpleTest2 ( varStrTable in varchar2 ) return varchar2 is testStr varchar2 ( 4000 ) ; begin for tempCur in ( select distinct ( riskcode ) from varStrTable ) loop testStr : = testStr || tempCur .

Oracle-视图

对着背影说爱祢 提交于 2020-01-16 18:51:50
创建视图 create view dept10 as select empno,ename,job from emp where deptno=10; 删除视图 drop view dept10; 通过列别名创建视图 create view v_emp as select empno 编号,ename 姓名,sal 工资 from emp where deptno=10; 创建复杂视图 –创建一个视图,通过该视图可以查看每个部门的名称,最低工资,最高工资,平均工资 create view v_emp1 (name,minsal,maxsal,avgsal)–给视图起别名 as select d.dname,min(e.sal),max(e.sal),avg(e.sal) from emp e,dept d where e.deptno=d.deptno group by d.dname 修改视图 create or replace view v_emp1 (employ_no,employ_name,employ_job)–给视图起别名 as select empno,ename,job from emp where deptno=10 在视图上添加数据 insert into v_emp1(empno,ename,job) values(2,‘周六’,‘研发’); -

Oracle存储过程

允我心安 提交于 2020-01-16 18:41:41
存储过程 存储过程就是一段在oracle中的业务逻辑,可以有输入参数和输出参数进行传值; 函数和存储过程的区别 声明所使用的标识符不一样 ,函数使用function ,存储过程procedure 1在oracle中方法必须有返回值(必须只能有一个返回值),存储过程没有返回值(但是可以通过返回参数地址引用赋值) 2函数用在sql语句中 (可以调用多个),存储过程用使用CallableStatement 对象调用(只能调用一个) 3函数计算并返回一个计算结果,存储过程一般是用来完成特定的数据操作(比如修改、插入数据库表或执行某些DDL语句等等),函数只有一个返回值,另外,存储过程和函数同样支持in,out,in out这三种类型的参数,游标类型也可以; 存储过程使用 编写存储过程后右键点击存储过程,点击测试,输入参数点击运行,即可测试存储过程 create or replace procedure myProcedure ( aa in varchar2 , bb out varchar2 , cc in out varchar2 ) is str varchar2 ( 20 ) ; begin dbms_output . put_line ( aa ) ; bb: = 'bb' ; cc: = 'cc' ; end ; 存储过程中返回游标 --创建包定义游标 create or

在开发过程中遇到的Oracle的坑及开发技巧

血红的双手。 提交于 2020-01-16 15:45:30
  本人与2018年毕业,工作一年多,仍是菜鸟,自毕业以来一直从事java软件开发工作,工作中大部分数据库都是使用的Oracle,碰到的问题总结一下(随时更新)。    1.sql中使用group by 分组时select 后面直接出现的字段也应当出现在gr oup by 的后面; select id,name from t_user group by id,name<!--正确--> select id,name from t_user group by id<!--错误-->    2.使用mybatis查询的结果集使用java类接收的话字段的大小写由java类字段大小写决定,而使用Map接收的话Map的键key会是大写,如果需要小写可以使用字段别名; <select resultType="java.util.Map"> <!--Map中键为ID和NAME--> select id,name from t_user </select> <select resultType="java.util.Map"> <!--Map中键为id和name--> select id "id",name as "name" from t_user </select>   3.wm_concat(column)是Oracle中的函数,用来合并同列字段

oracle常用sql语句

对着背影说爱祢 提交于 2020-01-16 14:57:54
目录 1)基本 2)数学函数 3)rownum 4)分页 5)时间处理 6)字符函数 7)to_number 8)聚合函数 9)学生选课 10)图书馆借阅 基本 --新建表: create table table1( id varchar(300) primary key, name varchar(200) not null); --插入数据 insert into table1 (id,name) values ('aa','bb'); --更新数据 update table1 set id = 'bb' where id='cc'; --删除数据 delete from table1 where id ='cc'; --删除表 drop table table1; --修改表名: alter table table1 rename to table2; --表数据复制: insert into table1 (select * from table2); --复制表结构: create table table1 select * from table2 where 1>1; --复制表结构和数据: create table table1 select * from table2; --复制指定字段: create table table1 as select id, name

oracle 常用sql语句

怎甘沉沦 提交于 2020-01-16 14:56:07
目录 1)基本 2)数学函数 3)rownum 4)分页 5)时间处理 6)字符函数 7)to_number 8)聚合函数 9)学生选课 10)图书馆借阅 基本 --新建表: create table table1( id varchar(300) primary key, name varchar(200) not null); --插入数据 insert into table1 (id,name) values ('aa','bb'); --更新数据 update table1 set id = 'bb' where id='cc'; --删除数据 delete from table1 where id ='cc'; --删除表 drop table table1; --修改表名: alter table table1 rename to table2; --表数据复制: insert into table1 (select * from table2); --复制表结构: create table table1 select * from table2 where 1>1; --复制表结构和数据: create table table1 select * from table2; --复制指定字段: create table table1 as select id, name

常用sql语句及案例(oracle)

倖福魔咒の 提交于 2020-01-16 14:51:15
目录 1)基本 2)数学函数 3)rownum 4)分页 5)时间处理 6)字符函数 7)to_number 8)聚合函数 9)学生选课 10)图书馆借阅 基本 --新建表: create table table1( id varchar(300) primary key, name varchar(200) not null); --插入数据 insert into table1 (id,name) values ('aa','bb'); --更新数据 update table1 set id = 'bb' where id='cc'; --删除数据 delete from table1 where id ='cc'; --删除表 drop table table1; --修改表名: alter table table1 rename to table2; --表数据复制: insert into table1 (select * from table2); --复制表结构: create table table1 select * from table2 where 1>1; --复制表结构和数据: create table table1 select * from table2; --复制指定字段: create table table1 as select id, name

常用sql语句及案例(oracle)

偶尔善良 提交于 2020-01-16 14:46:19
永不放弃,一切皆有可能!!! 只为成功找方法,不为失败找借口! 常用sql语句及案例(oracle) 目录 1)基本 2)数学函数 3)rownum 4)分页 5)时间处理 6)字符函数 7)to_number 8)聚合函数 9)学生选课 10)图书馆借阅 基本 --新建表: create table table1( id varchar(300) primary key, name varchar(200) not null); --插入数据 insert into table1 (id,name) values ('aa','bb'); --更新数据 update table1 set id = 'bb' where id='cc'; --删除数据 delete from table1 where id ='cc'; --删除表 drop table table1; --修改表名: alter table table1 rename to table2; --表数据复制: insert into table1 (select * from table2); --复制表结构: create table table1 select * from table2 where 1>1; --复制表结构和数据: create table table1 select * from

Oracle数据库中某个表中的某个字段的值是用逗号隔开的多个值,根据逗号拆分并从关联表中查出数据返回

安稳与你 提交于 2020-01-16 14:28:43
工作中遇到一个问题,表A中有一个字段,存的是编码值,但是不规范,存的多个值,用逗号(既有英文逗号,又有中文逗号,还有空格)隔开了;现需要根据编码值关联对应的编码表查出编码名称,所以网上查找资料得出了解决方法。本人用的是Oracle数据库。 参考MySQL数据库解决方法:https://blog.csdn.net/myme95/article/details/82661661 一、创建测试数据表 1.bi_test表(course_id既有英文逗号,又有中文逗号,还有空格) 2.bm_test表 3.希望得到的结果: (1) (2) 二、使用的函数 1.MySQL数据库可以直接使用FIND_IN_SET函数和group_concat()函数实现。详情戳https://blog.csdn.net/myme95/article/details/82661661 查看MySQL实现方法。 2.Oracle重写FIND_IN_SET函数(参考自:https://www.cnblogs.com/Iqiaoxun/p/5606639.html) CREATE OR REPLACE FUNCTION FIND_IN_SET(piv_str1 varchar2, piv_str2 varchar2, p_sep varchar2 := ',',p_sep2 varchar2 := ',')

SQL常见的一些面试题

大城市里の小女人 提交于 2020-01-16 01:10:05
SQL常见的一些面试题(太有用啦) SQL常见面试题 1.用一条SQL 语句 查询出每门课都大于80 分的学生姓名 name kecheng fenshu 张三 语文 81 张三 数学 75 李四 语文 76 李四 数学 90 王五 语文 81 王五 数学 100 王五 英语 90 A: select distinct name from table where name not in (select distinct name from table where fenshu<=80) select name from table group by name having min(fenshu)>80 学生表 如下: 自动编号 学号 姓名 课程编号 课程名称 分数 1 2005001 张三 0001 数学 69 2 2005002 李四 0001 数学 89 3 2005001 张三 0001 数学 69 删除除了自动编号不同, 其他都相同的学生冗余信息 A: delete tablename where 自动编号 not in(select min( 自动编号) from tablename group by学号, 姓名, 课程编号, 课程名称, 分数) 3.一个叫 team 的表,里面只有一个字段name, 一共有4 条纪录,分别是a,b,c,d, 对应四个球对