Oracle数据类型,函数与存储过程
字符串类型
固定长度:char nchar n 表示Unicode编码
可变长度: varchar2 nvarchar2
数字类型:number(P,S)P:整数位数,S小数位数
integer 整数
BINARY_FLOAT 单浮点
BINARY_DOUBLE 双浮点
FLOAT(N)浮点数 N表示精度
日期类型:DATE
TIMESTAMP
用户定义函数是存储在数据库中的代码块,能够把值返回到调用程序。调用时如同
系统函数一样,如max(value)函数,当中,value被称为參数。函数參数有3种类型。
IN 參数类型:表示输入给函数的參数。
OUT 參数类型:表示參数在函数中被赋值,能够传给函数调用程序。
IN OUT參数类型:表示參数既能够传值也能够被赋值。
1、语法格式:
SQL语法方式创建的语法格式为:
CREATE OR REPLACE FUNCTION function_name /*函数名称*/
(
Parameter_name1,mode1 datatype1, /*參数定义部分*/
Parameter_name2,mode2 datatype2,
Parameter_name3,mode3 datatype3
…
)
RETURN return_datatype /*定义返回值类型*/
IS/AS
variable variableType; /*声明变量*/
BEGIN
Function_body /*函数体部分*/
RETURN scalar_expression /*返回语句*/
END function_name;
说明:
function_name::用户定义的函数名。
函数名必须符合标示符的定义规则。对其全部者来说,该名在数据库中是唯一的。
parameter:用户定义的參数。
用户能够定义一个或多个參数。
mode:參数类型。
datatype:用户定义參数的数据类型。
return_type::用户返回值的数据类型。
函数返回scalar_expression表达式的值。function_body函数体由pl/sql语句构成。
实例:
create or replace function getName(uid in integer) return varchar2
as
username varchar2(10)
begin
select name into username from users where id=uid;
return(username);
end getName;
注意:
(1)假设函数没有參数,那么函数名后不应该要括号;在调用的时候也不须要參数名
(2)创建函数的时候end后面一定要记得写函数名
--没有參数的函数
create or replace function get_user return varchar2 is
v_user varchar2(50);
begin
select username into v_user from user_users;
return v_user;
end get_user;
存储过程
Oracle存储过程基本的语法 存储过程
1 CREATE OR REPLACE PROCEDURE 存储过程名 (參数名 类型 參数数据类型,...)
2 IS
3 BEGIN
4 NULL;
5 END;
行1:
CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫 做skeleton存储过程, 如 果存在就覆盖它;
行2:
IS关键词表明后面将尾随一个PL/SQL体。
行3:
BEGIN关键词表明PL/SQL体的開始。
行4:
NULL PL/SQL语句表明什么事都不做,这句不能删去,由于PL/SQL体中至少须要有一句;
行5:
END关键词表明PL/SQL体的结束
比如:
create or replace procedure pCountUsers(id integer,name varchar2)
as
begin
insert into users(id,name) values(id,name);
end ;
调用:call pCountUsers(2,'KK');
函数与存储过程的差别:
1. 返回值的差别,函数有1个返回值,而存储过程是通过參数返回的,能够有多个 或者没有
2.调用的差别,函数能够在查询语句中直接调用,而存储过程必须单独调用.
函数普通情况下是用来计算并返回一个计算结果而存储过程通常是用来完毕特定的数据操作(比方改动、插入数据 库表或运行某些DDL语句等等)
Oracle数据类型,函数与存储过程的更多相关文章
- oracle中函数和存储过程的区别和联系【转载竹沥半夏】
oracle中函数和存储过程的区别和联系[转载竹沥半夏] 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点.刚学完函数和存储过程,下面来和大家分享一下自己 ...
- oracle中函数和存储过程的区别和联系
oracle中函数和存储过程的区别和联系 在oracle中,函数和存储过程是经常使用到的,他们的语法中有很多相似的地方,但也有自己的特点.刚学完函数和存储过程,下面来和大家分享一下自己总结的关于函数和 ...
- Oracle存储函数,存储过程
一.Oracle存储函数:存储的PL/SQL语法块,完成特定的功能.1.语法: 函数关键字: function (1)创建函数 CREATE [OR REPLACE] FUNCTION <fun ...
- Oracle自定义函数和存储过程示例,自定义函数与存储过程区别
参考资料:http://www.newbooks.com.cn/info/60861.html oracle自定义函数学习和连接运算符(||) 贴一段中文文档示例,应该就可以开始工作了: --过程(P ...
- Oracle 在函数或存储过程中执行sql查询字符串并将结果值赋值给变量
请看黄色部分 --区县指标 THEN TVALUE_SQL := 'SELECT TO_CHAR(' || CUR_ROW.MAIN_FIELD || ') FROM ' || CUR_ROW.END ...
- Oracle 自定义函数、存储过程
讲函数之前,先介绍一下程序结构 3.程序结构 新建一个测试窗口,举一个小例子 declare -- 声明变量,包括游标 begin -- 执行部分 dbms_output.put_line('hell ...
- Oracle分页函数(存储过程)
create or replace package body Get_RecordByPage is StrSQL ); --分页函数 procedure GetRecordByPage(tblNam ...
- Oracle 在函数或存储过程中执行一条插入语句并返回主键ID值
有时,我们需要往一张表插入一条记录,同时返回主键ID值. 假定主键ID的值都是通过对应表的SEQUENCE来获得,然后进行ID赋值 这里有几种情况需要注意: 1)如果建表语句含有主键ID的触发器,通过 ...
- .Net程序员学用Oracle系列(7):视图、函数、存储过程、包
1.视图 1.1.创建.删除及调用普通视图 1.2.高级视图介绍 2.函数 2.1.系统函数介绍 2.2.创建.删除及调用自定义函数 3.存储过程 3.1.创建.修改及删除存储过程 3.2.调用存储过 ...
随机推荐
- django定义模型类
模型类被定义在应用文件夹下的model.py中 模型类必须继承Django的models.Model类 属性名不能用连续的两条下划线__ 主键:primary key,简写 pk 不需要主动定义,dj ...
- 关于 Notepad++ 崩溃之后正在编辑文件内容被清空的致命问题的补救措施
Notepad++ 以其功能强大.界面简洁.操作简单方便.超低内存耗用而受众多挨踢从业者青睐. Notepad++ 不像 UE 那样在你编辑的时候会定时生成 bak 备份文件.虽然 Notepad++ ...
- 服务器老是出现502 Bad Gateway?
给你的upstream增加keepalive配置没有? upstream backend { server http://127.0.0.1:8888; keepalive 32; } 在nginx和 ...
- 安装配置GitLab
在 CentOS 6 安装 使用国内镜像安装,新建 /etc/yum.repos.d/gitlab-ce.repo,添加以下内容 [gitlab-ce] name=gitlab-ce baseurl= ...
- php发送http请求的两种常用方法
第一种:使用CURL,直接上代码,开箱即用: <?php // return file_get_contents("http://thinkphp.com/index/index/cr ...
- 提取windows用户明文密码
前段时间mimikatz热传,主要是因为可以直接提取当前登录用户明文密码. 其实,有个更厉害的神器,无需那么多命令操作,一个命令搞定: C:\>wce -w WCE v1.3beta (Wind ...
- 吊销openvpn证书
#cd /tools/openvpn-2.0.9/easy-rsa/2.0/ #source vars 低版本的openssl需要注销以下几个配置 vim openssl.cnf #[ pkcs11_ ...
- hdu6166
hdu6166 题意 给出一个有向图,选择 \(k\) 个点,问这 \(k\) 个点任意两点距离的最小值. 分析 按结点编号的二进制位,每次可以把所有点分到两个集合,那么求两个集合的点间的最短路即可( ...
- 洛谷——P2117 小Z的矩阵
P2117 小Z的矩阵 题目描述 小Z最近迷上了矩阵,他定义了一个对于一种特殊矩阵的特征函数G.对于N*N的矩阵A,A的所有元素均为0或1,则G(A)等于所有A[i][j]*A[j][i]的和对2取余 ...
- 表(Table)
虽然我们已经将不同用途的物品保存在不同的仓库中了,但是在同一个仓库中数据的保存仍然存在问题.比如食品分为熟食.生肉.大米等,如果把他们随意的堆放在一起,就会造成我们无法很容易的对这些食品进行管理,当要 ...