PL/SQL中的procedure和function编程 procedure:存储过程 eg: create or replace procedure p --这儿是和plsql的区别 is curso
PL/SQL中的procedure和function编程
[日期:2013-06-11] 来源:Linux社区 作者:zhaoming [字体:]
PL/SQL中的procedure和function编程
procedure:存储过程
eg:
create or replace procedure p --这儿是和plsql的区别
is
cursor c
is
select * from emp2 for update;
--v_temp c%rowtype;
begin
for v_temp in c
loop
if(v_temp.sal
update emp2 set sal=sal*2 where current of c ;
elsif(v_temp.sal = 5000) then
delete from emp2 where current of c;
end if;
end loop;
commit;
end;
执行过程的命令:exec p; begin p end;
带参数的存储过程;
create or replace procedure p --in表示传入参数 out传出参数,,
(v_a in number,v_b number ,v_ret out number,v_temp in out number)
is
begin
if(v_a > v_b) then
v_ret :=v_a;
else
v_ret:=v_b;
end if;
v_temp := v_temp+1;
end;
调用过程:
declare
v_a number := 3;
v_b number := 4;
v_ret number ;
v_temp number := 5;
begin
p(v_a,v_b,v_ret,v_temp);
dbms_output.put_line(v_ret);
dbms_output.put_line(v_temp);
end;
函数:function
create or replacefunctionsal_tax
(v_sal number) --声明了一个函数
return number
is
begin
if(v_sal
return 0.10;
elsif(v_sal
return 0.15;
else
return 0.20;
end if;
end;
函数的调用::select lower(ename),sal_tax(sal) from emp;
触发器:trigger
不能直接执行,依赖于表
create table emp2_log
(
uname varchar2(20),
action varchar2(10),
atime date
);
创建触发器
create or replacetrigger trig
after insert or delete or update on emp2 for each row
begin
ifinserting then
insert intoemp2_log values (USER,'insert',sysdate);
elsifupdating then
insert into emp2_log values(USER,'update',sysdate);
elsif deleting then
insert into emp2_log values (USER,'delete',sysdate);
end if;
end;
update emp2 set sal=sal*2 where deptno = 30;
drop triggle trig;(删除)
create or replace trigger trig
after update on dept
for each row
begin
end;
update dept set deptno = 99 where deptno = 10;
树状结构的存储于显示:
create table ariticle
(
id number primary key,
cont varchar2(4000),
pid number,
isleaf number(1), -- 0代表非叶子节点,1代表叶子节点
alevel number(2)
);
insert into ariticle values(1,'ahshdhshd',0,0,0);
insert into ariticle values(2,'bhshdhshd',1,0,1);
insert into ariticle values(3,'chshdhshd',2,1,2);
insert into ariticle values(4,dhshdhshd',2,0,2);
insert into ariticle values(5,'ehshdhshd',4,1,3);
insert into ariticle values(6,'fhshdhshd',10,1);
insert into ariticle values(7,'ghshdhshd',6,1,0);
insert into ariticle values(8,'hhshdhshd',3,0,4);
insert into ariticle values(9,'ihshdhshd',7,0,0);
insert into ariticle values(10,'jhshdhshd',9,0,3);
commit;(提交)
create or replace procudure p (v_pid ariticle.pid%type,v_level binary_integer)
is cursor c
is select * from ariticle where pid = v__pid;
v_preStr varchar2(1024) :='';
begin
for i in 0..v_level loop
v_preStr :=v_preStr || ' ';
for v_ariticle in c
loop
dbms_output.put_line(v_preStr || v_ariticle.cont);
if (v_ariticle.isleaf = 0) then
p(v_ariticle.id,v_level+1);
end if;
end loop;
end;
exec p(0);

本文探讨了Docker中的优化MySQL内存使用量。 它讨论了监视技术(Docker统计,性能架构,外部工具)和配置策略。 其中包括Docker内存限制,交换和cgroups

本文介绍了MySQL的“无法打开共享库”错误。 该问题源于MySQL无法找到必要的共享库(.SO/.DLL文件)。解决方案涉及通过系统软件包M验证库安装

本文讨论了使用MySQL的Alter Table语句修改表,包括添加/删除列,重命名表/列以及更改列数据类型。

本文比较使用/不使用PhpMyAdmin的Podman容器直接在Linux上安装MySQL。 它详细介绍了每种方法的安装步骤,强调了Podman在孤立,可移植性和可重复性方面的优势,还

本文提供了SQLite的全面概述,SQLite是一个独立的,无服务器的关系数据库。 它详细介绍了SQLite的优势(简单,可移植性,易用性)和缺点(并发限制,可伸缩性挑战)。 c

本指南展示了使用自制在MacOS上安装和管理多个MySQL版本。 它强调使用自制装置隔离安装,以防止冲突。 本文详细详细介绍了安装,起始/停止服务和最佳PRA

文章讨论了为MySQL配置SSL/TLS加密,包括证书生成和验证。主要问题是使用自签名证书的安全含义。[角色计数:159]

文章讨论了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比较了它们对初学者和高级用户的功能和适合性。[159个字符]


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

SublimeText3 Linux新版
SublimeText3 Linux最新版

SublimeText3汉化版
中文版,非常好用

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)