--------游标使用
declare
cursor c1 is
select * from emp;
begin
for rec in c1 loop
dbms_output.put_line(rec.ename||','||rec.job);
end loop;
end;
------------隐式游标
drop table templ;
create global temporary table templ --全局临时表
(name varchar2(10),deptno varchar2(15),sal varchar2(20));
declare
cursor c1 is --cursor
select * from emp;
cursor_rec c1%rowtype; --cursor variable
cursor c2(v emp.deptno%type) is
select * from emp where deptno=v;--带参数游标
begin
open c1; --open
loop
fetch c1 into cursor_rec; --fetch
exit when c1%notfound;
insert into templ values
(cursor_rec.ename,cursor_rec.deptno,cursor_rec.sal);
end loop;
close c1; --close
end;
select replace('aaa-hell-bbb','-') from dual;
---------------------管道
grant execute on dbms_pipe to scott;
execute p1;
CREATE OR REPLACE PROCEDURE p1 IS
status INTEGER;
response VARCHAR2(2000);
BEGIN
dbms_pipe.reset_buffer; --重置缓冲
dbms_pipe.pack_message('This is message 1'); --pack
dbms_pipe.pack_message('This is message 2');
status := dbms_pipe.send_message('HOME_OF_P2'); --send
--status := dbms_pipe.receive_message('HOME_OF_P1', 60); --receive
--dbms_pipe.unpack_message(response); --unpack
--dbms_output.put_line('p1 receive:' || response);
END;
CREATE OR REPLACE PROCEDURE p2 IS
status INTEGER;
message1 VARCHAR2(2000);
message2 VARCHAR2(2000);
message VARCHAR2(2000);
message_part VARCHAR2(2000);
empty_buffer EXCEPTION;
PRAGMA EXCEPTION_INIT(empty_buffer, -6556);
BEGIN
FOR i IN 1 .. 2 LOOP
status := dbms_pipe.receive_message('HOME_OF_P2', 60); --receive 等待
BEGIN
WHILE (dbms_pipe.next_item_type = 9) LOOP
dbms_pipe.unpack_message(message_part); --unpack
message := message || '-' || message_part;
END LOOP;
EXCEPTION
WHEN empty_buffer THEN
NULL;
END;
END LOOP;
dbms_pipe.pack_message('Got p1 message'); --pack
status := dbms_pipe.send_message('HOME_OF_P1'); --send
dbms_output.put_line('p2 receive:' || message);
END;
----------------trigger
create or replace trigger professors_aur
after update on professors --更新教授表后
for each row --对每一行
when (old.salary<>new.salary)
begin
-----:new.prof_name
end;
---------自定义异常
customer_exp expection;
raise ...;
----------错误作为异常抛出
--------------警报
PROCEDURE send_alert(message IN VARCHAR2) IS
BEGIN
dbms_alert.signal('email_notification', message); --send
END;
PROCEDURE process_alerts IS
professor_email VARCHAR2(100);
status INTEGER;
BEGIN
dbms_alert.register('email_notification'); --register (先注册)
FOR i IN 1 .. 3 LOOP
dbms_alert.waitone('email_notification', professor_email, status, 10); --wait
IF status = 0 THEN
EXIT WHEN professor_email = 'END';
email_pkg.send('admin@school.com', professor_email, 'Salary', 'Salary has change');
END IF;
END LOOP;
END;
CREATE OR REPLACE PACKAGE BODY email_pkg IS
g_smtp_server CONSTANT VARCHAR2(20) := '00.00.00.00';
g_smtp_server_port CONSTANT PLS_INTEGER := 25;
PROCEDURE send(p_sender IN VARCHAR2,
p_recipient IN VARCHAR2,
p_message IN VARCHAR2,
p_subject IN VARCHAR2) IS
mail_conn utl_smtp.connection;
BEGIN
mail_conn := utl_smtp.open_connection(g_smtp_server, g_smtp_server_port); --open
utl_smtp.helo(mail_conn, g_smtp_server);
utl_smtp.mail(mail_conn, p_sender);
utl_smtp.rcpt(mail_conn, p_recipient);
utl_smtp.open_data(mail_conn);
utl_smtp.write_data(mail_conn, 'From: "' || p_sender || '" <' ||
p_sender || '>' || utl_tcp.CRLF);
utl_smtp.write_data(mail_conn, 'To: "' || p_recipient || '" <' ||
p_recipient || '>' || utl_tcp.CRLF);
utl_smtp.write_data(mail_conn, 'Subject: ' || p_subject || utl_tcp.CRLF);
utl_smtp.write_data(mail_conn, utl_tcp.CRLF || p_message);
utl_smtp.quit(mail_conn);
END;
END email_pkg;
/****************
aaaa,bbbb,ccc
*****************/
create or replace function next_token
(base_string in varchar2,look_for in varchar2,startAt in integer,
positionAt out integer) return boolean is
result integer;
begin
instr(base_string,look_for,startAt)
end;
select instr('aaaa,bbb,ccc,dd',',',1,2) from dual;
declare
baseString varchar2(20):='aa,bbbb,ccc,ddd';
token varchar2(5):=',';
a natural:=1;
b natural:=1;
begin
loop
b:=instr(baseString,token,a);
if b=0 then
dbms_output.put_line(substr(baseString,a));
exit;
end if;
dbms_output.put_line(substr(baseString,a,b-a));
a:=b+1;
end loop;
end;
select translate('abcabcbca','abc','xyz') from dual;
select initcap('NEW YORK') from dual;
select sqrt(2) from dual;
declare
n number;
begin
dbms_random.seed(123333456);
n:=dbms_random.value(10,100);
dbms_output.put_line(n);
end;
分享到:
相关推荐
本章主要关注存储过程、触发器和用户定义函数。 **存储过程**是数据库中的重要组成部分,它是一个预编译的SQL代码模块,可以高效地执行特定任务,并且是可重用的。存储过程分为三种类型:用户定义存储过程、扩展...
张帆教授的这门课程涵盖了从第4章到第11章的内容,涉及了信息存储系统的基础理论、技术和实践应用。在这个压缩包中,22236-00_1-3可能是课件的组成部分,可能包括讲义、幻灯片或者其他教学材料。 信息存储与检索的...
第11章 SQL Server 2008的安全机制 第12章 备份与恢复数据库 第13章 自动化SQL Server 2008数据库 第14章 集成服务 第15章 报表服务 第16章 分析服务 第17章 使用.NET 访问SQL Server 2008 第18章 监视SQL Server ...
第四十七章:ISCSI 企业共享存储方案 本章节主要讲述了企业共享存储方案中的ISCSI技术,涵盖了存储概述、存储分类、ISCSI概念、ISCSI技术的应用等内容。通过本章节的学习,读者将了解到企业存储应用内容、存储分类...
在第11章的练习中,你可能会接触到如何使用STL容器存储和操作数据,以及如何使用STL算法进行排序、查找等操作。 3. **面向对象编程(OOP)**:C++是一种支持面向对象编程的语言,第11章可能涉及继承、多态和封装等...
在这一章,你将学习如何定义和实例化类,理解类和对象的关系,以及如何使用构造函数和析构函数。此外,还将深入学习C#中的控制流语句,如if条件判断、switch语句、循环(for、while、foreach)以及异常处理机制。 ...
第18章 主从复制.assets第17章 其它数据库日志.assets第16章 多版本并发控制,assets第15章 锁,assets第14章 MySQL事务日志.assets第13章 事务基础知识.assets第12章 数据库其它调优策略,assets第11章 数据库的设计...
【ACCP8.0S2-Y2转换教材第十一章】是针对青鸟教育体系中第八版第二阶段的编程课程内容,重点讲解了在实际项目开发中的编程技术和实践。"详细注释源码"意味着这份教材不仅包含了理论知识,还提供了带有注释的代码示例...
最后,第十五章介绍了ONTAP的发布模型,这有助于用户了解软件更新和版本控制的过程。第十六章则提供了进一步学习和获取支持的资源。 综上所述,《联想DM存储设备 NetApp设备ONTAP概念指南》是一份全面的技术资料,...
第11章 PL/SQL语言基础 第12章 存储过程和触发器 第13章 游标 第14章 任务调度 第15章 事务与锁定 第3篇 系统优化 第16章 数据库内存和进程的配置与优化 第17章 常用性能监测、分析和优化工具 第18章 对SQL...
《疯狂Android讲义第二版》是一本深入浅出的Android开发教程,其光盘源码涵盖了从第十一章到第十五章的重要知识点。这些章节主要涉及Android应用开发的高级技术,包括用户界面优化、多媒体处理、网络编程、数据存储...
【MySQL8.0学习第一章】 在本章的学习中,我们将深入了解MySQL数据库系统,这是一个广泛应用于各种行业的关系型数据库管理系统(RDBMS)。首先,我们从基础出发,了解数据库的概论,包括数据、数据库、数据库管理...
第十一章至第十三章则关注数据库的安全性和完整性,包括访问控制、权限管理以及触发器和存储过程的使用。习题可能涉及如何设置用户权限,或者设计能够确保数据完整性的触发器。 最后,第十四章可能涉及数据库的备份...
### 数据结构第十一章知识点详解 #### 一、章节概述 本章节主要介绍了高级线性表中的几个核心概念和技术,包括多维数组、广义表以及存储管理技术。通过学习这些内容,我们可以更好地理解如何有效地组织和处理复杂的...
2. **外部型(extern)**:如果一个变量在函数外部声明,它就是一个外部变量,可以在整个程序中访问。例如,全局变量默认具有外部存储类别。 3. **静态型(static)**:静态变量的生命周期贯穿整个程序的执行过程,而...
第11章 数据仓库和数据智能 数据仓库和数据智能是指对数据的存储和分析,以支持业务决策和intelligence。这一章节主要介绍了数据仓库和数据智能的定义、重要性、方法和工具。 第12章 元数据管理 元数据管理是指对...
第6章_视图、存储过程和自定义函数_V08_2 第7章_关系数据库规范化理论_V08_2 第8章_数据库设计_V08_2 第9章_数据库完整性约束_V08_2 第10章_数据库安全性_V08_2 第11章_数据库的备份与恢复技术_V08_2 第12章_面向...
这一章可能涵盖了XML布局文件的创建,包括线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)和网格布局(GridLayout)等基本布局类型。此外,还可能讲解了如何使用View和 ViewGroup,...
《学习OpenCV》第十一章主要讲解了相机标定的过程,这是计算机视觉领域的一个关键步骤,用于纠正由相机镜头引起的图像畸变,并获取相机的内在参数。本章的可运行代码提供了实现这一过程的实际示例,帮助读者深入理解...