Oracle存储函数,存储过程
一、Oracle存储函数:存储的PL/SQL语法块,完成特定的功能。
1、语法: 函数关键字: function
(1)创建函数
CREATE [OR REPLACE] FUNCTION <function name> [(param1,param2)] RETURN <datatype> IS|AS
[local declarations]
declare
.....
BEGIN
Executable Statements;
RETURN result;
EXCEPTION
Exception handlers;
END;
(2)调用函数
--调用
--1.写查询调用
select fun1 from dual;
--2.PL/SQL语法块调用
declare
my_name varchar2(20);
begin
my_name := fun1;
dbms_output.put_line(my_name);
end;
2、函数的参数模式
(1)输入参数 in:
--有参的函数
create or replace function fun2(s_id number) return varchar2
as
t_name varchar2(20);
begin
select sname into t_name from stu where sid = s_id;
return t_name;
end; select fun2(4) from dual;
例:输入in与输出out参数
create or replace function fun2(t_id number,t_name out varchar2) return varchar2
as
begin
select sname into t_name from stu where sid = t_id;
return t_name;
end; declare
stu_name varchar2(20);
my_name varchar2(20);
begin
stu_name := fun2(1,my_name);
dbms_output.put_line(stu_name);
end;
(2)in out参数
create or replace function fun3(num1 in out number,num2 in out number) return varchar2
as
t_temp number;
begin
t_temp := num1;
num1 := num2;
num2 := t_temp;
return num1 + num2;
end; declare
numa number := 10;
numb number := 20;
numc number;
begin
dbms_output.put_line(numa || '--'||numb);
numc := fun3(numa,numb);
dbms_output.put_line(numa || '--'||numb);
end;
注意:1、参数要为变量,定值返回时无法赋值。
2、函数return要有返回值 就是end之前return语句,当调用函数时还需要声明一个变量接受返回值,即使没有使用。
规范:参数v开头,如v_name,临时变量t_name (temp_name)。
二、Oracle存储过程
Oracle存储过程:将执行的过程存储起来就是存储过程。
1、语法 :存储过程关键字 procedure
CREATE [OR REPLACE] procedure <procedure name> [(param1,param2)] IS|AS
[local declarations]
BEGIN
Executable Statements;
EXCEPTION
Exception handlers;
END;
参数用法和存储函数一样
调用:略有不同
1.PL/SQL语法块
2.命令行 使用 execute 命令去调用 如 execute procedure_name(param1,param2);
三、区别
存储过程和存储函数的区别:
1、存储函数有返回值,存储过程没有返回值
2、调用方式略有不同.. 函数和过程都支持 pl/sql调用
函数支持 (select)查询直接调用 过程支持 execute 命令调用
3、存储过程是否可以代替存储函数? 可以代替,但是兼容性问题,存储过程后出现 。之前的项目要支持。
存储函数有时更加方便,可以直接select查询调用,
--视图配合存储函数
create or replace view emp_v as
select e.*,yearsal(e.sal,e.comm) as "年薪" from emp e;
--计算年薪的存储函数
create or replace function yearsal(v_sal number,v_comm number) return number as
t_year number;
begin
t_year := v_sal*12+nvl(v_comm,0);
return t_year;
end;
Oracle存储函数,存储过程的更多相关文章
- PL/SQL轻量版(四)——存储函数/存储过程与触发器
概述 ORACLE 提供可以把 PL/SQL 程序存储在数据库中,并可以在任何地方来运行它.这样就叫存储过程或函数.过程和函数统称为 PL/SQL 子程序,他们是被命名的 PL/SQL 块,均存储在数 ...
- Oracle存储函数jdbc调用
package com.jckb.procedure; import java.sql.CallableStatement; import java.sql.Connection; import ja ...
- ORACLE 存储函数
前奏: 必要的概念: ORACLE 提供能够把 PL/SQL 程序存储在数据库中.并能够在不论什么地方来运行它.这样就叫存储过 程或函数. 过程和函数统称为 PL/SQL 子程序.他们是被命名的 PL ...
- oracle存储函数实例
CREATE OR REPLACE PROCEDURE "PROC_INS_DAY_DOCTOR_LL"(v_date in VARCHAR) is --PROC_INS_DAY_ ...
- oracle 游标/函数/存储过程/触发器 表空间
--存储过程,循环create or replace procedure delTables(ename t_emp.ename%TYPE)AScon number;i NUMBER := 1;tab ...
- 关于oracle的函数,存储过程,触发器,序列,视图,左右连接一些的应用 带案例
CREATE TABLE STUDENT( --创建学生表 ID NUMBER(10) PRIMARY KEY, --主键ID NAME VARCHAR2(20), CLASSNAME VA ...
- oracle 存储函数,更新库存
create procedure PRO_update_Goods_group_stock is v_min_stock , ); v_gg_stock , ); v_goods_no number; ...
- oracle存储过程和存储函数&触发器
oracle存储过程和存储函数 指存储在数据库中供所有用户程序调用的子程序叫存储过程,存储函数 存储过程和存储函数的相同点:完成特定功能的程序 存储过程和存储函数的区别:是否用return语句返回值 ...
- Oracle的基本语法,存储函数及触发器
1.PL/SQL PL/SQL是Oracle对 ql语言的过程化扩展,指在 SQL 命令语言中增加了过程处理语句,使SQL语言具有过程处理能力.把 SQL 语言的数据操纵能 力与过程语言的数据 ...
随机推荐
- Python学习day06-Python基础(4)流程控制之while和for循环
Python学习day06-流程控制之while和for循环 Python学习day06-流程控制之while和for循环while循环1. 语法2. while+break,while+contin ...
- c# asp.net 修改webconfig文件 配置
#region 修改config文件 /// <summary> /// 修改config文件(AppSetting节点) /// </summary> /// <par ...
- 枚举进程,线程,堆 CreateToolhelp32Snapshot
Takes a snapshot of the processes and the heaps, modules, and threads used by the processes.对当前系统进行一 ...
- Android开发 Camera2开发_1_拍照功能开发
介绍 google已经在Android5.1之后取消了对Camera1的更新,转而提供了功能更加强大的Camera2.虽然新版本依然可以使用Camera1但是,不管是各种机型适配还是拍照参数自定义都是 ...
- Bash 常用快捷方式
从历史中执行命令 ctrl +r 搜索历史命令记录 !$ 重复上一个命令参数 文本编辑的快捷方式 c 分别更改这些配对标点符号中的文本内容 di 分别删除这些配对标点符号中的文本内容 do ...
- [转]WPF中Binding的技巧
在WPF应用的开发过程中Binding是一个非常重要的部分. 在实际开发过程中Binding的不同种写法达到的效果相同但事实是存在很大区别的. 这里将实际中碰到过的问题做下汇总记录和理解. 1. so ...
- JZOJ5822 【NOIP提高A组模拟2018.8.16】 量子纠缠
这是一道很巧妙的题目. 今早,我调了好久,终于将它切掉了-- 题目 Description Input 第一行包含一个正整数 m,代表操作数. 接下来 m 行,每行可能有以下形式: 1 s 代表将数字 ...
- 最全Kubernetes审计日志方案
前言 当前Kubernetes(K8S)已经成为事实上的容器编排标准,大家关注的重点也不再是最新发布的功能.稳定性提升等,正如Kubernetes项目创始人和维护者谈到,Kubernetes已经不再是 ...
- 工控安全入门(六)——逆向角度看Vxworks
上一篇文章中我们对于固件进行了简单的分析,这一篇我们将会补充一些Vxworks的知识,同时继续升入研究固件内容. 由于涉及到操作系统的内容,建议大家在阅读本篇前有一定操作系统知识的基础,或者是阅读我的 ...
- 强制以32位ie运行程序
最近被一个问题给郁闷住了.给电脑重装系统后,发现发布好的程序.或者VS2012总是以64位ie运行程序,这样的话skyline的三维控件无法显示.到现在我是确定ie64无法识别skyline的控件. ...