Oracle使用手册(三)---存储过程与触发器
2006-07-21 14:29
671 查看
--存储过程
--3.带参数的存储过程
--rownum
--SELECT * FROM STUDENT WHERE sid=2 and ROWNUM<=1;
/
--SELECT * FROM STUDENT WHERE ROWNUM<=5;
/
CREATE OR REPLACE PROCEDURE MRFUTESTPRO
( MYID student.sid%type)
AS
MYNAME student.sname%type;
BEGIN
EXECUTE IMMEDIATE 'SELECT SNAME FROM STUDENT WHERE SID=:1 and ROWNUM<2'
USING MYID
RETURNING INTO MYNAME;
DBMS_OUTPUT.PUT_LINE('我的名字:'||MYNAME);
exception
when others then
dbms_output.put_line('没有符合条件的数据');
end MRFUTESTPRO;
/
BEGIN
MRFUTESTPRO(2);
END;
/
--创建一个存储过程实现输入一个学生的sid编号,查询出拥有该sid号的第一个学生的名字.
create or replace procedure mrfuproc
( tempid in student.sid%type ,
tempName out student.sname%type
)
as
myName nvarchar2(50);
begin
select sname into tempName from student where sid=tempid and rownum<2;
myName:='姓名'||tempName;
end mrfuproc;
/
declare
myid student.sid%type;
myName student.sname%type;
begin
myid:=10;
myName:='';
mrfuproc(myid,myName);
dbms_output.put_line(myid);
dbms_output.put_line(myName);
end;
/
--创建队列示例
CREATE SEQUENCE idseqSample
START WITH 1 -- 从1开始计数
INCREMENT BY 1 -- 每次加几个
NOMAXVALUE -- 不设置最大值
MINVALUE 1
CACHE 10 --缓冲区大小
NOCYCLE -- 一直累加,不循环
--NOCACHE -- 不建缓冲区
/
--创建索引
CREATE UNIQUE INDEX system.idindex ON system.student(recordid);
/
--创建队列
CREATE SEQUENCE system.idseq start with 1 increment by 1 maxvalue 987654321 minvalue 1 cache 10 ;
/
--创建触发器 ,实现插入student表中纪录时,自动插入recordid字段数据,并实现自动增量.
CREATE OR REPLACE TRIGGER system.idtrigger
BEFORE INSERT ON system.student REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW
BEGIN
SELECT system.idseq.NEXTVAL INTO :NEW.recordid FROM DUAL;
END;
/
--测试 ,首先删除表中的所有记录,然后插入30条纪录.最后检查效果.
delete from system.student;
/
declare
i int:=0;
begin
for i in 1..30 loop
insert into system.student (sid,sname,sage)values(i,'frj'||to_char(i),'26');
end loop;
end;
/
select * from system.student;
/
--3.带参数的存储过程
--rownum
--SELECT * FROM STUDENT WHERE sid=2 and ROWNUM<=1;
/
--SELECT * FROM STUDENT WHERE ROWNUM<=5;
/
CREATE OR REPLACE PROCEDURE MRFUTESTPRO
( MYID student.sid%type)
AS
MYNAME student.sname%type;
BEGIN
EXECUTE IMMEDIATE 'SELECT SNAME FROM STUDENT WHERE SID=:1 and ROWNUM<2'
USING MYID
RETURNING INTO MYNAME;
DBMS_OUTPUT.PUT_LINE('我的名字:'||MYNAME);
exception
when others then
dbms_output.put_line('没有符合条件的数据');
end MRFUTESTPRO;
/
BEGIN
MRFUTESTPRO(2);
END;
/
--创建一个存储过程实现输入一个学生的sid编号,查询出拥有该sid号的第一个学生的名字.
create or replace procedure mrfuproc
( tempid in student.sid%type ,
tempName out student.sname%type
)
as
myName nvarchar2(50);
begin
select sname into tempName from student where sid=tempid and rownum<2;
myName:='姓名'||tempName;
end mrfuproc;
/
declare
myid student.sid%type;
myName student.sname%type;
begin
myid:=10;
myName:='';
mrfuproc(myid,myName);
dbms_output.put_line(myid);
dbms_output.put_line(myName);
end;
/
--创建队列示例
CREATE SEQUENCE idseqSample
START WITH 1 -- 从1开始计数
INCREMENT BY 1 -- 每次加几个
NOMAXVALUE -- 不设置最大值
MINVALUE 1
CACHE 10 --缓冲区大小
NOCYCLE -- 一直累加,不循环
--NOCACHE -- 不建缓冲区
/
--创建索引
CREATE UNIQUE INDEX system.idindex ON system.student(recordid);
/
--创建队列
CREATE SEQUENCE system.idseq start with 1 increment by 1 maxvalue 987654321 minvalue 1 cache 10 ;
/
--创建触发器 ,实现插入student表中纪录时,自动插入recordid字段数据,并实现自动增量.
CREATE OR REPLACE TRIGGER system.idtrigger
BEFORE INSERT ON system.student REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW
BEGIN
SELECT system.idseq.NEXTVAL INTO :NEW.recordid FROM DUAL;
END;
/
--测试 ,首先删除表中的所有记录,然后插入30条纪录.最后检查效果.
delete from system.student;
/
declare
i int:=0;
begin
for i in 1..30 loop
insert into system.student (sid,sname,sage)values(i,'frj'||to_char(i),'26');
end loop;
end;
/
select * from system.student;
/
相关文章推荐
- Oracle使用手册(三)---存储过程与触发器
- oracle使用游标 触发器的存储过程
- oracle简单的存储过程和函数以及触发器的使用
- 如何在Oracle中使用Java存储过程 (详解) .
- oracle 存储过程和触发器复制数据
- Oracle 查看 表, 存储过程, 触发器, 函数, 等对象定义语句
- oracle 存储过程中使用事务管理
- 使用 ADO.NET 访问 Oracle 9i 存储过程《收藏MSDN》
- oracle 存储过程使用实例
- Oracle 触发器调用包中的存储过程
- 使用wrap和unwrap加密解密Oracle的PL/SQL对象(包,存储过程,函数等)代码
- 使用Oracle的存储过程批量插入数据
- oracle使用UTL_MAIL包实现存储过程邮件发送(转)
- Oracle中 关于数据库存储过程和存储函数的使用
- Oracle 11g 使用 UTL_MAIL 包实现存储过程发送邮件
- Oracle 笔记之 存储过程的使用
- (转)如何在Oracle中使用Java存储过程 (详解)
- 如何在Oracle中使用Java存储过程 (详解)
- oracle 创建表,序列,索引,视图,触发器,函数,存储过程,定时器,包体
- Oracle存储过程中临时表的使用技巧