oracle函数

oracle PL\\SQL块和复合类型

泄露秘密 提交于 2020-02-25 11:04:20
2018-12-04 PL\SQL程序块由三个部分组成: 声明部分、执行部分、异常处理部分 。 其结构如下:    declare     /*声明部分:说明要用到得变量,类型及游标,以及局部存储过程和函数*/       /*变量的定义和系统保留字要区分开(sql server 中可用@  PL\SQL不能用@)*/   begin     /*执行部分:过程及SQL语句*/       /*必须有*/   exception     /*异常处理部分:错误处理*/   end; PL/SQL中除了一些常见的变量类型外,还有复合类型   复合类型分为记录和表    记录 :由单行多列的标量构成的复合结构。可以看做是一种用户自定义数据类型。将一个或多个标量封装成一个对象进行操作。是一种临时复合对象类型。     语法:         type record_type is record(         Field1 type1 [not null] [:= exp1],         Field1 type1 [not null] [:= exp2],         ...         Fieldn typen [not null] [:= expn]);       其中可以用%type和%rowtype 来为声明的变量快速指明类型。          %type—

Oracle与MySQL的几点区别

為{幸葍}努か 提交于 2020-02-25 08:46:13
Oracle数据库与MySQL数据库的区别是本文我们主要介绍的内容,希望能够对您有所帮助。 1.组函数用法规则 mysql中组函数在select语句中可以随意使用,但在oracle中如果查询语句中有组函数,那其他列名必须是组函数处理过的,或者是group by子句中的列否则报错 eg: select name,count(money) from user;这个放在mysql中没有问题在oracle中就有问题了。 2.自动增长的数据类型处理 MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值。ORACLE没有自动增长的数据类型,需要建立一个自动增长的序列号,插入记录时要把序列号的下一个值赋于此字段。 CREATE SEQUENCE序列号的名称(最好是表名+序列号标记)INCREMENT BY 1 START WITH 1 MAXVALUE 99999 CYCLE NOCACHE; 其中最大的值按字段的长度来定,如果定义的自动增长的序列号NUMBER(6),最大值为999999 INSERT语句插入这个字段值为:序列号的名称.NEXTVAL 3.单引号的处理 MYSQL里可以用双引号包起字符串,ORACLE里只可以用单引号包起字符串。在插入和修改字符串前必须做单引号的替换:把所有出现的一个单引号替换成两个单引号。 4.翻页的SQL语句的处理

pl/sql函数学习

我的未来我决定 提交于 2020-02-25 01:10:17
7種函數的詳細介紹及用法: 1、錯誤報告(error reporting)函數 sqlcode 返回 oracle 錯誤號 sqlerrm 返回oracle錯誤信息 主要用於異常處理 declare err_num number; err_msg varchar2(100); begin ... exception ... when others then /*當引發異常的時候,將SQLERRM和SQLCODE值取出,插入表ERRORS中*/ err_num:=sqlcode; err_msg:=substr(sqlerrm,1,100); insert into errors(errnum,errmsg) values(err_num,err_msg); end; 2、數值(Number)函數 abs 返回絕對值 acos 返回以弧度為單位的反余弦值 asin 返回以弧度為單位的反正弦值 atan(m) 返回m的反正切值(以弧度為單位),即返回arctan(m) atan2(m,n) 返回m與n的反正切值即返回aretan(m/n) bitand 位與函數,即按位相與 ceil 返回大於等於特定值的最小整數 cos 返回以弧度為單位的余弦值 cosh 返回以弧度為單位的雙曲余弦值 exp 求e的x方(e=2.71828,如 exp(3)=e的3次方) floor

sparkSQL用JDBC连接Oracle写数据

老子叫甜甜 提交于 2020-02-21 14:20:07
主要是需要用Oracle的序列,而sparkSQL的jdbc是没有函数去实现的,所以只有用Oracle本身的表名.nextval来实现 核心代码部分: object Grade { Class . forName ( "oracle.jdbc.driver.OracleDriver" ) val connection : Connection = DriverManager . getConnection ( sqlUrl , user , password ) // SQL请换成你自己的 val prepareStatement : PreparedStatement = connection . prepareStatement ( "" "insert into GIS_SCORERECORD(ID,......) values(SEQ_GIS_SCORERECORD.nextval,?.....)" "" ) var num = 0 def main ( args : Array [ String ] ) : Unit = { spark . sql ( "" "你的SQL" "" ) . rdd . collect . foreach { rows = > { prepareStatement . setBigDecimal ( 1 , rows . getDecimal

Oracle数据库过程、函数、包、触发器

柔情痞子 提交于 2020-02-19 15:05:06
过程: call procedures_name(p1,p2,...);-- 调用存储过程 select * from user_procedures;-- 获取有关存储过程信息 Show errors for procedure procedure_name;-- 查看存储过程中的错误 函数: select function_name(p1,p2...) from dual;-- 调用 select * from user_procedures;-- 查询函数,按照object_type区分过程,函数,... 包: select 包名.过程/函数 from dual;或者call 包名.过程/函数;-- 调用包中的函数或者过程 select * from user_procedures;-- 查询包信息 触发器: alter trigger trigger_name disable;-- 禁用触发器 select * from user_triggers;-- 读取触发器信息 来源: https://www.cnblogs.com/suhfj-825/p/12331234.html

oracle创建用户、表空间、临时表空间、分配权限步骤详解

做~自己de王妃 提交于 2020-02-19 04:52:09
首先登陆管理员账号,或者有DBA权限的用户,接下来依次: --查询所有用户 select * from dba_users; --创建新用户 create user gpmgt identified by GPMGT; --查看所有用户所在表空间 select username,default_tablespace from dba_users; --查询所有表空间路径 select * from dba_data_files ; --创建一个表空间 create tablespace GPMGT_DATA datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\GPMGT_DATA_1.DBF' size 200m autoextend on next 32m maxsize 2048m extent management local; --创建临时表空间 --表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存放在指定的表空间中。但主要存放的是表, 所以称作表空间。Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间,可自动释放;而表空间中存储表数据、函数、过程、序列等。是随数据库永久存在的。 create temporary tablespace GPMGT_TEMP tempfile 'D:\APP

oracle中将同一组的数据拼接(转)

放肆的年华 提交于 2020-02-18 14:52:46
需要用wm_concat函数来实现。 如目前在emp表中查询数据如下: 要按照deptno相同的将ename以字符串形式合并,可用如下语句: 1 select deptno,wm_concat(ename) from emp group by deptno; 查询结果: 转 https://www.cnblogs.com/muhy/p/10558107.html 需要用wm_concat函数来实现。 如目前在emp表中查询数据如下: 要按照deptno相同的将ename以字符串形式合并,可用如下语句: 1 select deptno,wm_concat(ename) from emp group by deptno; 查询结果: 转 https://www.cnblogs.com/muhy/p/10558107.html 来源: https://www.cnblogs.com/ZJ0065/p/12326087.html

SQL Fundamentals || Oracle SQL语言

廉价感情. 提交于 2020-02-18 02:06:53
对于SQL语言,有两个组成部分: DML(data manipulation language) 它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对 数据库 里的数据进行操作的语言。 DDL(data definition language) DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用。 当发生了任何 DDL 操作的时候,对于事务都会 自动提交 , ROLLBACK 不能回滚 . 所有 DDL 操作不受事务的控制 . SQL语言共分为四大类: 数据查询语言DQL 数据查询语言DQL基本结构是由 SELECT子句,FROM子句,WHERE子句 组成的查询块: SELECT <字段名表> FROM <表或视图名> WHERE <查询条件> SQL Fundamentals: 子查询 || 行列转换(PIVOT,UNPIVOT,DECODE),设置数据层次(LEVEL...CONNECT BY) SQL Fundamentals: 子查询 || 分析函数(PARTITION BY,ORDER BY, WINDOWING) SQL Fundamentals: 子查询 || WHERE,HAVING

IOC框架之AutoFac简介

喜你入骨 提交于 2020-02-17 19:11:01
一、为什么使用AutoFac? 之前介绍了Unity和Ninject两个IOC容器,但是发现园子里用AutoFac的貌似更为普遍,于是捯饬了两天,发现这个东东确实是个高大上的IOC容器~ Autofac是.NET领域最为流行的IOC框架之一,传说是速度最快的一个: 优点: 它是C#语言联系很紧密,也就是说C#里的很多编程方式都可以为Autofac使用,例如可以用Lambda表达式注册组件 较低的学习曲线,学习它非常的简单,只要你理解了IoC和DI的概念以及在何时需要使用它们 XML配置支持 自动装配 与Asp.Net MVC 3集成 微软的Orchad开源程序使用的就是Autofac,从该源码可以看出它的方便和强大 既然它都这么牛X了,我们用它就理所当然了,所以推荐其为IOC的终极解决方案! Autofac是一款IOC框架,比较于其他的IOC框架,如Spring.NET,Unity,Castle等等所包含的,它很轻量级性能上非常高。 官方网站 http://autofac.org/ 源码下载地址 https://github.com/autofac/Autofac 控制反转(IoC/Inverse Of Control): 调用者不再创建被调用者的实例,由autofac框架实现(容器创建)所以称为控制反转。 依赖注入(DI/Dependence injection) :

Oracle 查询的十个小技巧

 ̄綄美尐妖づ 提交于 2020-02-17 14:05:19
Oracle数据库查询十个小技巧 数据查询,是数据库操作中最主要的功能之一;有时候数据库查询性能的好坏,直接关系到数据库的运行效率,关系到数据库的选型。下面笔者不谈大道理,只是对其中对一些平时大家容易忽略的查询小技巧做一些总结。或许大家可能正在为此犯愁呢?   第一个技巧:利用连接符连接多个字段。   如在员工基本信息表中,有员工姓名、员工职位、出身日期等等。如果现在视图中这三个字段显示在同一个字段中,并且中间有分割符。如我现在想显示的结果为“经理Victor出身于1976年5月3日”。这该如何处理呢?其实,这是比较简单的,我们可以在Select查询语句中,利用连接符把这些字段连接起来。   如可以这么写查询语句:   SELECT员工职位 ||’ ’ ||员工姓名||’出身于’||出身日期 as 员工出身信息 FROM 员工基本信息表;   通过这条语句就可以实现如上的需求。也就是说,我们在平时查询中,可以利用||连接符把一些相关的字段连接起来。这在报表视图中非常的有用。如笔者以前在设计图书馆管理系统的时候,在书的基本信息处有图书的出版社、出版序列号等等内容。但是,有时会在打印报表的时候,需要把这些字段合并成一个字段打印。为此,就需要利用这个连接符把这些字段连接起来。而且,利用连接符还可以在字段中间加入一些说明性的文字,以方便大家阅读。如上面我在员工职位与员工姓名之间加入了空格