您的位置:首页 > 其它

分页存储过程

2014-12-22 23:55 267 查看
-----------只有输入参数的存储过程-----------------
CREATE OR REPLACE PROCEDURE TESTA(param_id IN Number,
param_name IN VARCHAR2)
AS
BEGIN
INSERT INTO employee (empid,empname)
VALUES (param_id, param_name);
END TESTA;

call student.TESTA(108,'testA');
select * from employee;

----------同时带有输入和输出参数的存储过程-------------
CREATE OR REPLACE PROCEDURE TESTB(param_id IN Number,
param_name OUT VARCHAR2)
AS
BEGIN

SELECT empname INTO param_name FROM student.employee
WHERE empid= param_id;

END TESTB;

declare empname varchar2(10);
begin
TESTB(1001,empname);
dbms_output.put_line(empname);
end;

-- 使用ref cursor返回多行存储过程执行结果---------
CREATE OR REPLACE PACKAGE TESTPACKAGE  AS

TYPE Test_CURSOR IS REF CURSOR;

end TESTPACKAGE;

CREATE OR REPLACE PROCEDURE TESTC(param_name IN VARCHAR2,p_CURSOR out TESTPACKAGE.Test_CURSOR)
AS
BEGIN
OPEN p_CURSOR FOR SELECT * FROM student.employee
where empname like param_name;
END TESTC;

---分页存储过程----------------

create or replace procedure pagedproc(
p_cursor out testpackage.Test_CURSOR,lowerNum in numeric,higherNum in numeric)
as
begin
open p_cursor for
select * from
(select rownum num,r.* from
(select * from employee order by empid) r where rownum <=higherNum)
where num >=lowerNum;
end pagedproc;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: