Oracle存储过程、存储函数
2016-09-17 17:39
661 查看
存储过程:
1、指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。2、存储过程和存储函数的相同点:完成特定功能的程序。
3、存储过程和存储函数的区别:是否用return语句返回值。存储函数可以使用一个return语句返回一个函数值,而存储过程不能。
创建和使用存储过程: 用create procedure 命令建议存储过程和存储函数。 语法: create [or replace] PROCEDURE 过程名(参数列表) AS PLSQL子程序体;
第一个存储过程:打印Hello World
如何调用存储过程:F5运行脚本:
调用存储过程:
带参数的存储过程:
举例:为指定的员工,涨100快钱的工资;并且打印涨前和涨后的薪水(并调式)。--创建一个带参数的存储过程: --给指定的员工涨100元的工资,并且打印涨薪前和涨薪后的薪水 /* 如何调用 begin raisesalary(7839); raisesalary(7566); commit; end; */ create or replace procedure raisesalary(eno in number) as --定义一个变量保存涨前的薪水 psal emp.sal%type; begin --得到员工涨薪前的薪水 select sal into psal from emp where empno=eno; --给该员工涨100 update emp set sal=sal+100 where empno=eno; --需不需要commit? --注意:一般不在存储过程或者存储函数中,commit和rollback --打印 dbms_output.put_line('涨前:'||psal||'涨后:'||(psal+100)); end; /
报权限不足,解决方法:
在这里的时候报错,报错信息如下:
连接到数据库 demo。 执行 PL/SQL: ALTER SESSION SET PLSQL_DEBUG=TRUE 执行 PL/SQL: CALL DBMS_DEBUG_JDWP.CONNECT_TCP( '192.168.100.114', '49296' ) ORA-24247: 网络访问被访问控制列表 (ACL) 拒绝 ORA-06512: 在 "SYS.DBMS_DEBUG_JDWP", line 68 ORA-06512: 在 line 1 进程已退出。 从数据库 demo 断开连接。解决方法,参考文章:http://blog.csdn.net/btt2013/article/details/52563756
存储函数:
1、函数(Function)为一命名的存储程序,可带参数,并返回一计算值。2、函数和过程的结构类似,但必须有一个return子句,用于返回函数值。
创建存储函数的语法: create [or replace] FUNCTION 函数名(参数列表) return 函数值类型 AS PLSQL子程序体;存储函数举例:查询某个员工的年收入
create or replace function queryempincome(eno in number) return number as --定义变量保存员工的薪水和奖金 psal emp.sal%type; pcomm emp.comm%type; begin --得到该员工的月薪和奖金 select sal,comm into psal,pcomm from emp where empno=eno; --直接返回年收入 --return psal*12+pcomm; 如果存在没有奖金的员工,这种方式返回会为NULL return psal*12+nvl(pcomm,0); end;
in和out参数:
一般来讲,存储过程和存储函数的区别在于存储函数可以有一个返回值;而存储过程没有返回值。1、存储过程和存储函数都可以有out参数
2、存储过程和存储函数都可以有多个out参数
3、存储过程可以通过out参数来实现返回值
原则:
如果只有一个返回值,用存储函数;否则,就用存储过程。
create or replace procedure queryempinform(eno in number, pename out varchar2, psal out number, pjob out varchar2) as begin --得到该员工的姓名、月薪和职位 select ename,sal,empjob into pename,psal,pjob from emp where empno=eno; end;
相关文章推荐
- Oracle存储过程、存储函数以及Java程序调用存储过程和存储函数
- Oracle存储过程,存储函数的学习
- .net 执行oracle存储过程时 找不到存储过程名,总是找函数的原因
- Oracle存储过程和存储函数创建方法(详解)
- .net 执行oracle存储过程时 找不到存储过程名,总是找函数的原因
- 调用分页存储过程的函数
- sqlserver 存储过程、存储函数的加密、解密
- sqlserver 存储过程、存储函数的加密、解密
- 一般存储过程和函数
- 数字转换成大写金额的存储过程或函数
- C#调用ORACLE存储过程返回结果集及函数
- 优秀的分页存储过程,可以改成性能最优良的分页类或函数或类
- sqlserver 存储过程、存储函数的加密、解密[转]
- 存储过程、存储函数的加密:WITH ENCRYPTION
- 使用c#调用oracle存储过程获取存储过程参数信息
- php调用mysql存储过程和函数的方法
- C#调用ORACLE存储过程返回结果集及函数
- 在VS2005中采用c#书写存储过程和函数等以及使用
- 模拟字符串处理函数 stuff 的存储过程,对 ntext 字段进行stuff .
- 实用-实现文件存储的JS函数