Oracle创建存储过程、创建函数、创建包
一、Oracle创建存储过程
1、基本语法
2、写一个简单的例子修改emp表的ename字段
调用方法如下:
就写一个简单的返回empno=7935的sal值
调用有返回值的过程
1、基本语法规则如下:
2、写一个简单的查询例子查询出empno=7935的sal值
调用此函数:
三、Oracle创建包
包用于组合逻辑相关的过程和函数,它由包规范和包体两个部分组成。包规范用于定义公用的常量、变量、过程和函数,创建包规范可以使用CREATE PACKAGE命令,创建包体可以使用CREATE PACKAGE BODY
1、创建包规范
2、创建包体
在此提示,在没有创建包规范就创建包体,会失败,要使用包,必须先创建包规范,然后在创建包体
当要调用包的过程和函数时,在过程和函数的名称前加上包名作为前缀(包名.子程序名称),而如果要访问其他方案的包时需要在包的名称前加上方案的名称
(方案名称.包名.子程序名称)
实例:
一、Oracle创建存储过程
1、基本语法
create or replace procedure update_emp_sal(Name in out type, Name in out type, ...) isbegin end update_emp_sal;
2、写一个简单的例子修改emp表的ename字段
create or replace procedure update_emp(v_empno varchar2,v_ename varchar2) isbeginupdate emp set ename=v_ename where empno=v_empno; end update_emp;
调用方法如下:
SQL>exec update_emp('7935','test');2、有返回值的存储过程
就写一个简单的返回empno=7935的sal值
create or replace procedure emp_out_sal ( v_empno in varchar2, v_sal out number ) is vsal number(7,2); begin select sal into vsal from emp where empno=v_empno; v_sal:=vsal; end;
调用有返回值的过程
SQL> var vsal numberSQL> exec emp_out_sal('7935',:vsal);PL/SQL procedure successfully completedvsal---------700SQL> var vsal numberSQL> call emp_out_sal('7935',:vsal);Method calledvsal---------700二、Oracle创建函数(function)
1、基本语法规则如下:
create or replace function (Name in type, Name in type, ...) return number is Result number;begin return (Result);end ;
2、写一个简单的查询例子查询出empno=7935的sal值
create or replace function ret_emp_sal(v_ename varchar2)return numberisv_sal number(7,2);beginselect nvl(sal,0) into v_sal from emp where lower(ename)=lower(v_ename);return v_sal;end;
调用此函数:
SQL> var vsla numberSQL> call ret_emp_sal('7935') into :vsal;Method calledvsal---------700
三、Oracle创建包
包用于组合逻辑相关的过程和函数,它由包规范和包体两个部分组成。包规范用于定义公用的常量、变量、过程和函数,创建包规范可以使用CREATE PACKAGE命令,创建包体可以使用CREATE PACKAGE BODY
1、创建包规范
create package emp_pkg is procedure emp_update_ename(v_empno varchar2,v_ename varchar2); function emp_get_sal(v_empno varchar2) return number; end;
2、创建包体
create or replace package body emp_pkgis procedure emp_update_ename ( v_empno varchar2, v_ename varchar2 ) is vename varchar2(32); begin update emp set ename=v_ename where empno=v_empno; commit; select ename into vename from emp where empno=v_empno; dbms_output.put_line('雇员名称:'||vename); end; function emp_get_sal ( v_empno varchar2 ) return number is vsal number(7,2); begin select sal into vsal from emp where empno=v_empno; return vsal; end;end;
在此提示,在没有创建包规范就创建包体,会失败,要使用包,必须先创建包规范,然后在创建包体
当要调用包的过程和函数时,在过程和函数的名称前加上包名作为前缀(包名.子程序名称),而如果要访问其他方案的包时需要在包的名称前加上方案的名称
(方案名称.包名.子程序名称)
实例:
SQL> var vsla numberSQL> call emp_pkg.emp_get_sal('7935') into :vsal;Method calledvsal---------700SQL> exec emp_pkg.emp_update_ename('7935','helong');雇员名称:helongSQL> call emp_pkg.emp_update_ename('7935','helong');Method calledSQL> select * from dual;DUMMY-----X雇员名称:helong
发表评论
-
No result defined for action and result input
2014-11-04 00:00 691No result defined for action an ... -
oracle常用函数
2014-09-25 13:52 594oracle常用函数 1.decode(value,if 1 ... -
java 对象之间属性值复制
2014-09-15 13:42 16691, BeanUtils.copyProperties(des ... -
XStream解析下划线出现重复问题
2014-07-17 17:15 1517直接看代码 XStream xs = new XStrea ... -
在eclipse中svn账户或密码错误或想更改用户
2014-04-21 16:26 817删除c:\User\当前登录名\AppData\Roaming ... -
spring3集成quartz2
2014-04-19 14:34 949最近项目中要用到quartz 做job,在网上看了些资料,自己 ... -
oracle与mysql多行合并
2014-04-14 14:59 7941.oracle多行合并一行 效果: SELECT a, ... -
jasperreport报表问题
2014-04-04 17:14 1238今天改报表遇到个问题,从svn拉了个报表下来直接改,改后编译放 ... -
如何防止用户重复提交
2013-08-26 18:43 1163防止重复提交java解决 ... -
java.lang.IllegalStateException: getOutputStream() has already been called for t
2013-06-04 21:42 1077最近查看apache tomcat日志,发现经常出现一个错误如 ... -
简单的Excel导出
2013-05-28 23:02 980项目报表要做导出Excel的功能,用了POI,首先要加载POI ... -
sql
2013-04-01 17:20 645sql从一张表的数据更新到另一张表 UPDATE 表B S ... -
javascript获取当前行
2013-01-10 14:53 1335这些天用到了,记下来,说不定将来有用 var td=even ... -
严格的身份证号码验证
2012-12-27 15:26 936<script> function chec ... -
游标的使用
2012-12-06 21:00 857create or replace procedure ... -
存储过程
2012-12-06 19:41 851存储过程 1 CREATE OR REPLACE PRO ... -
关于oracle 中的jobs
2012-12-06 15:18 1119先给个小例子吧 create ... -
javascript操作时间总结
2012-11-22 19:57 836时间对象是一个我们经常要用到的对象,无论是做时间输出、时间判断 ... -
tomcat启动时报异常java.lang.Exception: Socket bind failed
2012-11-07 10:57 1543异常如下: 严重: Error starting endpoi ... -
浅谈网页乱码问题分析
2012-10-28 21:33 12841.首先,我要讲一下乱 ...
相关推荐
Oracle数据库存储过程、函数、以及包的创建与高级应用。
Oracle实验报告
oracle中的存储过程.函数,包的创建,更新实例
首先,在数据库端创建简单的存储过程。 create or replace procedure test_msg(i_user in varchar2, o_msg out varchar2) is begin o_msg := i_user ||', Good Morning!'; end; 然后,开始在Python命令行中进行...
oracle PL_SQL编程 创建存储过程、函数、触发器等
自定义函数不能被直接在Java中调用,可以通过存储过程调用函数的方法。本文采用实例的方法,介绍如何在Oracle数据库客户端PL/SQL中创建自定义函数,然后创建相应的存储过程调用该函数,最终实现一个实例计算。
1.2.1 创建存储函数 6 1.2.2 删除存储函数 7 1.3 包(package) 7 1.3.1 包的基本结构 7 1.3.2 包的创建 7 1.3.3 调用包中元素 9 1.3.4 包的修改和删除 9 第二章 oracle存储过程基础――PL/SQL 9 2.1 pl/sql基础 9 ...
由自己手敲代码已验证好用,里面有索引,存储过程,函数
1. 创建存储过程:首先,我们需要创建一个存储过程,例如使用 `create or replace procedure` 语句。 2. 编写存储过程:然后,我们需要编写存储过程的代码,例如使用 PL/SQL 语言。 3. 编译存储过程:最后,我们需要...
创建存储过程的基本语法为:`CREATE OR REPLACE PROCEDURE 过程名 (参数列表) AS 变量声明 BEGIN 过程体 END;` 其中,`CREATE OR REPLACE PROCEDURE` 是一个 SQL 语句,用于创建或替换一个存储过程。`过程名` 是...
oracle 建立基础数据表、函数、存储过程等
ORACLE下的存储过程和函数 存储过程和函数是一种操作块,用来流程化、整体化处理业务逻辑的数据库操作方式。我理解的是相当于java开发语言中方法的概念,存储过程和函数的区别在于函数可以有返回值,而过程没有...
Oracle 存储过程总结 1、创建存储过程 2、变量赋值 3、判断语句 4、For 循环 5、While 循环 6、数组 7.游标的使用
快速学习函数创建和练习。 创建函数、存储过程、创建过程、调用存储过程、AUTHID、PRAGMA AUTONOMOUS_TRANSACTION、开发存储过程步骤、删除过程和函数、过程与函数的比较
本文实例讲述了oracle 存储过程、函数和触发器用法。分享给大家供大家参考,具体如下: 一、存储过程和存储函数 指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。 创建存储过程 用CREATE ...
常见的oracle存储过程总结,系统地介绍oracle的创建存储过程、变量、游标、数组以及一些常用的字符串函数的适用,非常实用。
oracle 创建,删除存储过程,参数传递,创建,删除存储函数,存储过程和函数的查看,包,系统包 认识存储过程和函数 存储过程和函数也是一种PL/SQL块,是存入数据库的PL/SQL块。但存储过程和函数不同于已经介绍过的PL/SQL...
PLSQL Developer是一种功能强大的Oracle数据库开发工具,提供了许多功能来帮助开发者快速编写和管理存储过程、存储函数和触发器等高级数据库对象。本文将详细介绍如何使用PLSQL Developer编写和管理存储过程、存储...
oracle函数大全&存储过程语法.rar
—————–存储过程———————— –定义 create[or replace] procedure 存储过程名称(参数名 [in]/out 数据类型) is/as begin –逻辑表达式 end [存储过程名称]; –定义存储过程计算年薪,并答应...