Oracle 学习笔记 18 -- 存储函数和存储过程(PL/SQL子程序)
PL/SQL子程序 它包含了函数和过程。此功能是指用户定义的函数。和系统功能是不同的。子程序通常完成特定的功能PL/SQL座。,能够被不同的应用程序多次调用。Oracle提供能够把PL/SQL程序存储在数据库中,并能够再不论什么地方来执行它。
这样就叫做存储过程或者是函数。
过程和函数的唯一差别就是函数总是向调用者返回数据。而过程则不返回数据。
函数
假设用户要常常运行某些操作,而且须要返回特定的数据。那么就能够将这些操作构造成一个函数。
能够使用SQL语句定义函数。
基本的语法:
create or replace function fun_name(argument [in | out | in out ]datatype ...)
return datatype
is | as
-- 须要定义的变量 。记录类型 。 游标
begin
--函数的运行体
exception
--处理出现的异常
end ;当中,return datatype , 是要返回数据的类型。IN參数标记表示传递给函数的值在函数运行中不改变;OUT标记表示一个值在函数进行计算并通过该參数传递给调用语句;IN OUT 标记表示传递给函数的值能够变化并传递给调用语句。
例:定义一个返回hello 的函数
create or replace function hello
return varchar2
is
begin
return 'Hello World';
end ;运行 ,Function created ,函数创建成功。
函数的调用。与Oracle内置函数的调用同样,能够使用select hello from dual ;进行调用,也能够使用PL/SQL语句进行调用 :
begin
dbms_output.put_line(hello);
end ;
例:创建带參数的helloworld函数
create or replace function helloworld(str varchar2)
return varchar2
is
begin
return 'Hello' || '_' ||str ;
end ;
函数的调用要在函数名称后面加上參数,即:select helloworld('World') from dual ;使用Pl/sql的调用除了加上參数外与上面同样,不在赘述。
例:求一个部门中,员工的工资总数的函数
create or replace function get_sal(dept number)
return number
is
v_sum number(10) := 0 ;
cursor sal_cursor is select sal from emp where deptno = dept ;
begin
for c in sal_cursor loop
v_sum := v_sum + c.sal ;
end loop ;
return v_sum ;
end ;
存储过程
存储过程,能够被多个应用程序调用。也能够向存储过程传递參数。向存储过程传回參数。
基本的语法
create or replace procedure pro_name(argument [in | out | in out ]datatype ...)
is | as
-- 须要定义的变量 ,记录类型 , 游标
begin
--函数的运行体
exception
--处理出现的异常
end ;
例:使用存储过程。求部门的工资总和
create or replace procedure get_sal1(dept number ,sumsal out number)
is
cursor sal_cursor is select sal from emp where deptno = dept ;
begin
sumsal := 0 ;
for c in sal_cursor loop
sumsal := sumsal + c.sal ;
end loop ;
dbms_output.put_line(sumsal);
end ;
存储过程的调用:
declare
v_sum number(10) := 0 ;
begin
get_sal1(30 , v_sum);
end ;
调用格式:
CALL | EXCEUTE procedure_name(arg_list) ;
能够使用show error 命令来提示源代码的错误位置。
使用user_error 数据字典来查看各存储过程的错误位置。
删除过程和函数
删除过程
语法例如以下:
DROP PROCEDURE[USER.]procedure_name ;
删除函数
语法例如以下:
DROP FUNCTION [USER.]function_name ;
版权声明:本文博主原创文章。博客,未经同意不得转载。
Oracle 学习笔记 18 -- 存储函数和存储过程(PL/SQL子程序)的更多相关文章
- PL/SQL学习笔记_03_存储函数与存储过程
ORACLE 提供可以把 PL/SQL 程序存储在数据库中,并可以在任何地方来运行它.这样就叫存储过程或函数. 存储函数:有返回值,创建完成后,通过select function() from dua ...
- Oracle 学习笔记 19 -- 触发器和包浅析(PL/SQL)
触发器是存放在数据库中的一种特殊类型的子程序.不能被用户直接调用,而是当特定事件或操作发生时由系统自己主动 调用执行.触发器不能接受參数.所以执行触发器就叫做触发或点火.Oracle事件指的是数据库的 ...
- Oracle 学习笔记(Windows 环境下安装 + PL/SQL)
Oracle 安装.PL/SQL 配置使用 前言:因更换机械硬盘为 SSD 固态硬盘装了新 Windows 7 系统,需要重新搭建开发环境,把 Oracle 安装过程和 PL/SQL 配置使用做下笔 ...
- Oracle学习笔记:trunc函数
在Oracle中可以使用trunc函数进行日期截取和数字截取,具体使用方法如下: 1.trunc(for dates) 日期截取 语法:trunc(date,[fmt]) select trunc(s ...
- Oracle学习笔记:wm_concat函数合并字段
在Oracle中使用wm_concat(column)可以实现字段的分组合并,逗号分隔. 例如,现有表temp_cwh_test: -- 创建临时表 create table temp_cwh_tes ...
- Oracle学习笔记_03_单行函数
1.SQL函数: 单行函数.多行函数 单行函数: 操作数据对象 接受参数返回一个结果 只对一行进行变换 每行返回一个结果 可以转换数据类型 ...
- Oracle学习笔记之用户自定义函数
自定义函数语法格式: 用户自定义的函数,可以直接在sql语句中直接调用,并且任何一个funciton都必须有返回值,而且该函数声明后,是保存在数据端的,我们随时可以使用:注意:函数只能有一个返回值 ...
- Oracle学习笔记:decode函数
decode函数主要作用:将查询结果翻译成其他值(即以其他形式变现出来) 使用方法: SELECT DECODE(colunm_name,值1,翻译值1,值2,翻译值2……值n,翻译值n,缺省值) F ...
- Oracle学习笔记_05_分组函数
组函数:avg sum max min count group by having group by 增强:rollup cube grouping groupi ...
随机推荐
- 全面详细介绍一个P2P网贷领域的ERP系统的主要功能
一般的P2P系统,至少包括PC网站的前端和后端.前端系统的功能,可以参考"P2P系统哪家强,功能其实都一样" http://blog.csdn.net/fansunion/ ...
- jquery实现ajax提交form表单的方法总结(转)
方法一: 复制代码 代码如下: function AddHandlingFeeToRefund() { var AjaxURL= "../OrderManagement ...
- kafka集群操作指南
目录 kafka集群操作指南 (一)单机版安装 (二)集群安装 (三)集群启停操作 (四)topic相关的操作 (五)某个broker挂掉,本机器可重启 (六)某个broker挂掉且无法重启,需要其它 ...
- spark提交应用的方法(spark-submit)
参考自:https://spark.apache.org/docs/latest/submitting-applications.html 常见的语法: ./bin/spark-submit \ ...
- JNI——Java调用C/C++函数
从C/C++到Java,再从Java回到C/C++,今天终于有机会了解了连接Java.C/C++的桥梁——JNI.哈哈!分享一下! 一.简介 JNI是Java native interface的简 ...
- jquery-11 jquery中的事件切换如何实现
jquery-11 jquery中的事件切换如何实现 一.总结 一句话总结:事件切换hover()和toggle()函数.参数两个,都是函数,依次执行两个函数. 1.如何实现单击切换图片? 用togg ...
- 第一次使用docker for windows 遇到的坑
原文:第一次使用docker for windows 遇到的坑 1. 目前win10安装docker, 不需要安装其他工具,可直接到官网下载 2. 此版本的docker可同时运行Windows con ...
- 【Z10】引水入城
[题目链接]:http://noi.qz5z.com/viewtask.asp?id=z10 [题解] 对于第一问:从最上面那m个格子开始进行广搜就可以了: 然后看一下最下面那一行有没有被全部覆盖; ...
- URIEncoding
http://thoughtfly.iteye.com/blog/1533481 http://docs.spring.io/spring/docs/current/spring-framework- ...
- Java中a=a+b 与 a+=b差别
一般觉得a=a+b的运行效率是低于a+=b的,由于它多进行了一步中间变量的操作,并且会多占用一个变量的空间.而Java编译器默认对其进行了优化,优化之后两条语句都当做 a+=b来运行了,所以实际上是没 ...