oracle

推荐列表 站点导航

当前位置:首页 > 数据库 > oracle >

Oracle中 关于数据库存储过程和存储函数的使用

来源:网络整理  作者:  发布时间:2020-12-14 03:05
本篇文章,小编将为大家介绍,在Oracle中 关于数据库存储过程和存储函数的使用,有需要的朋友可以参考一下...
AS
方法二
SQL> create or replace
1 /
select sal into pSal from emp where empno=empid;


数据库触发器是一个与表相关联的、存储的PL/SQL程序。每当一个特定的数据操作语句(Insert,update,delete)在指定的表上发出时,Oracle自动地执行触发器中定义的语句序列。
end;
as
pComm number; --定义变量保存员工的奖金

语句级触发器
raise_application_error(-20001,'更新后的薪水比更新前小');
declare
800涨工资后880

所有字段都是空(null)

CREATE [OR REPLACE] FUNCTION函数名(参数列表)
pSal emp.sal%type;--保存员工当前 工资

示例2:确认数据(检查emp表中sal的修改值不低于原值)
存储函数
Procedure created
raisesalary(7369);

:old

创建触发器

delete

end if;
dbms_output.put_line('salary is:'|| queryEmpSalary(7934));

触发器的类型

将要插入的数据

/*
update emp set sal=260 where empno=7499

update emp set sal = sal*1.1 where empno=empid;
before insert on emp

CREATE [or REPLACE] TRIGGER 触发器名

创建存储过程
if :new.sal<:old.sal then
/
PLSQL子程序体;
select sal,comm into psal,pcomm from emp where empno = empid;
Trigger created
end;
end;
RETURN 函数值类型
用CREATE PROCEDURE命令建立存储过程和存储函数。

删除以前该行的值

begin
v_sal:=queryEmpSalary(7934);

Update

• 实施复杂的安全性检查

:new


begin
员工号:7369涨工资前

/
触发语句与伪记录变量的值

触发语句

ORA-06512: 在 "SCOTT.CHECKSAL", line 4
return number
SQL> /**/
SQL> begin
/
触发语句作用的每一条记录都被触发。在行级触发器中使用old和new伪记录变量,识别值的状态。
ON 表名
SQL> update emp set sal=260 where empno=7499;

Trigger created
raise_application_error(-20001,'不能在非工作时间插入数据。');


• Select * from user_triggers;
before update of sal on emp
begin
函数(Function)为一命名的存储程序,可带参数,并返回一计算值。函数和过程的结构类似,但必须有一个RETURN子句,用于返回函数值。函数说明要指定函数名、结果值的类型,以及参数类型等。
dbms_output.put_line('salary is:'|| v_sal);
Function created

为指定的职工在原工资的基础上长10%的工资,并打印工资前和工资后的工资
v_sal number;
return psal*12+nvl(pcomm,0);
end;


AS
在指定的操作语句操作之前或之后执行一次,不管这条语句影响了多少行。
l 函数的调用
• Select * from user_source;
pSal number; --定义变量保存员工的工资
存储过程没有返回值。存储函数有返回值
存储过程和存储函数指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。
• 做审计,跟踪表上所做的数据操作等


--打印涨工资前后的工资

end;
end if;

SQL> create or replace procedure raiseSalary(empid in number)
PLSQL 块

触发器可用于
SQL> set serveroutput on
示例:查询某职工的年收入。

ORA-20001: 更新后的薪水比更新前小
end;
--查询该员工的工资

PLSQL子程序体;
查询触发器、过程及函数



查询某职工的总收入
SQL> create or replace trigger checkSal

begin
/*
语法:
declare

if to_char(sysdate,'day')in('星期四','星期六','星期日')

*/

触发器

触发器总结
--存储过程调用
SQL> exec raisesalary(7369);
{DELETE | INSERT | UPDATE [OF列名]}
ORA-04088: 触发器 'SCOTT.CHECKSAL'执行过程中出错
PL/SQL procedure successfully completed
end;

SQL> declare
--给该员工涨工资
/

所有字段都是空(null)

/
PL/SQL procedure successfully completed

更新以前该行的值

*/

更新后的值

create or replace function queryEmpSalary(empid in number)
示例1:限制非工作时间向数据库插入数据

{BEFORE | AFTER}
存储过程示例:为指定的职工在原工资的基础上长10%的工资

Insert

set serveroutput on
dbms_output.put_line('员工号:' || empid || '涨工资前
运行后结果:



建立存储函数的语法:
begin
create [or replace] PROCEDURE过程名(参数列表)
for each row
salary is:15600
行级触发器(FOR EACH ROW)
/
' || psal || '涨工资后' || psal*1.1);
begin

PL/SQL procedure successfully completed
trigger securityEmp


--方法一
• 数据确认
salary is:15600
[FOR EACH ROW [WHEN(条件) ] ]
as
or to_number(to_char(sysdate,'hh24'))not between 8 and 18 then

相关热词: oracle

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://www.juheyunku.com/sql/oracle/3589.shtml

Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

Oracle中 关于数据库存储过程和存储函数的使用

2020-12-14 编辑:

AS
方法二
SQL> create or replace
1 /
select sal into pSal from emp where empno=empid;


数据库触发器是一个与表相关联的、存储的PL/SQL程序。每当一个特定的数据操作语句(Insert,update,delete)在指定的表上发出时,Oracle自动地执行触发器中定义的语句序列。
end;
as
pComm number; --定义变量保存员工的奖金

语句级触发器
raise_application_error(-20001,'更新后的薪水比更新前小');
declare
800涨工资后880

所有字段都是空(null)

CREATE [OR REPLACE] FUNCTION函数名(参数列表)
pSal emp.sal%type;--保存员工当前 工资

示例2:确认数据(检查emp表中sal的修改值不低于原值)
存储函数
Procedure created
raisesalary(7369);

:old

创建触发器

delete

end if;
dbms_output.put_line('salary is:'|| queryEmpSalary(7934));

触发器的类型

将要插入的数据

/*
update emp set sal=260 where empno=7499

update emp set sal = sal*1.1 where empno=empid;
before insert on emp

CREATE [or REPLACE] TRIGGER 触发器名

创建存储过程
if :new.sal<:old.sal then
/
PLSQL子程序体;
select sal,comm into psal,pcomm from emp where empno = empid;
Trigger created
end;
end;
RETURN 函数值类型
用CREATE PROCEDURE命令建立存储过程和存储函数。

删除以前该行的值

begin
v_sal:=queryEmpSalary(7934);

Update

• 实施复杂的安全性检查

:new


begin
员工号:7369涨工资前

/
触发语句与伪记录变量的值

触发语句

ORA-06512: 在 "SCOTT.CHECKSAL", line 4
return number
SQL> /**/
SQL> begin
/
触发语句作用的每一条记录都被触发。在行级触发器中使用old和new伪记录变量,识别值的状态。
ON 表名
SQL> update emp set sal=260 where empno=7499;

Trigger created
raise_application_error(-20001,'不能在非工作时间插入数据。');


• Select * from user_triggers;
before update of sal on emp
begin
函数(Function)为一命名的存储程序,可带参数,并返回一计算值。函数和过程的结构类似,但必须有一个RETURN子句,用于返回函数值。函数说明要指定函数名、结果值的类型,以及参数类型等。
dbms_output.put_line('salary is:'|| v_sal);
Function created

为指定的职工在原工资的基础上长10%的工资,并打印工资前和工资后的工资
v_sal number;
return psal*12+nvl(pcomm,0);
end;


AS
在指定的操作语句操作之前或之后执行一次,不管这条语句影响了多少行。
l 函数的调用
• Select * from user_source;
pSal number; --定义变量保存员工的工资
存储过程没有返回值。存储函数有返回值
存储过程和存储函数指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。
• 做审计,跟踪表上所做的数据操作等


--打印涨工资前后的工资

end;
end if;

SQL> create or replace procedure raiseSalary(empid in number)
PLSQL 块

触发器可用于
SQL> set serveroutput on
示例:查询某职工的年收入。

ORA-20001: 更新后的薪水比更新前小
end;
--查询该员工的工资

PLSQL子程序体;
查询触发器、过程及函数



查询某职工的总收入
SQL> create or replace trigger checkSal

begin
/*
语法:
declare

if to_char(sysdate,'day')in('星期四','星期六','星期日')

*/

触发器

触发器总结
--存储过程调用
SQL> exec raisesalary(7369);
{DELETE | INSERT | UPDATE [OF列名]}
ORA-04088: 触发器 'SCOTT.CHECKSAL'执行过程中出错
PL/SQL procedure successfully completed
end;

SQL> declare
--给该员工涨工资
/

所有字段都是空(null)

/
PL/SQL procedure successfully completed

更新以前该行的值

*/

更新后的值

create or replace function queryEmpSalary(empid in number)
示例1:限制非工作时间向数据库插入数据

{BEFORE | AFTER}
存储过程示例:为指定的职工在原工资的基础上长10%的工资

Insert

set serveroutput on
dbms_output.put_line('员工号:' || empid || '涨工资前
运行后结果:



建立存储函数的语法:
begin
create [or replace] PROCEDURE过程名(参数列表)
for each row
salary is:15600
行级触发器(FOR EACH ROW)
/
' || psal || '涨工资后' || psal*1.1);
begin

PL/SQL procedure successfully completed
trigger securityEmp


--方法一
• 数据确认
salary is:15600
[FOR EACH ROW [WHEN(条件) ] ]
as
or to_number(to_char(sysdate,'hh24'))not between 8 and 18 then

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://www.juheyunku.com/sql/oracle/3589.shtml

相关文章

风云图片

推荐阅读

返回oracle频道首页