oracle 函数、包的定义及使用
2014-12-22 19:21
274 查看
方法定义:
CREATE OR REPLACE
function insert_emp
(v_EMPNO NUMBER,v_ENAME VARCHAR2,v_JOB VARCHAR2,v_MGR NUMBER,v_HIREDATE DATE,v_SAL NUMBER,v_COMM NUMBER,v_DEPTNO NUMBER)
return NUMBER
IS
BEGIN
INSERT into EMP values(v_empno,v_ENAME,v_JOB,v_MGR,v_HIREDATE,v_SAL,v_COMM,v_DEPTNO);
return 1;
end insert_emp;
创建存储过程调用方法:
create or replace PROCEDURE function_test(
v_EMPNO NUMBER,
v_ENAME VARCHAR2,
v_JOB VARCHAR2,
v_MGR NUMBER,
v_HIREDATE DATE,
v_SAL NUMBER,
v_COMM NUMBER,
v_DEPTNO NUMBER,
v_out out number)
AS
BEGIN
v_out:= insert_emp(v_EMPNO,v_ENAME,v_JOB,v_MGR,v_HIREDATE,v_SAL,v_COMM,v_DEPTNO);
end;
调用存储过程:
DECLARE
p_out number;
BEGIN
function_test('7347', 'Kitty', 'CLERK', '7902', TO_DATE('1980-12-17 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '800', null, '20',p_out);
end;
包:
1、定义
create or replace package my_1
is
PROCEDURE sayhello(vname varchar2);
end;
2、实现包体
CREATE or replace package body my_1
is
PROCEDURE sayhello(vname varchar2)
IS
BEGIN
dbms_output.putline('hello'||vname);
end;
end;
3、创建存储过程调用
create or replace PROCEDURE package_test(p1 string)
AS
BEGIN
my_1.sayhello(p1);
end;
BEGIN
package_test('a');
end;
Sequence
CREATE sequence num
INCREMENT BY 1
START WITH 1
nomaxvalue
nocycle
cache 10;
主要有num.nextval,num.currval属性
游标:
DECLARE
cursor result is SELECT * from STUDENT for UPDATE ;
resultInfo STUDENT%rowtype;
i_Status STUDENT.status%type;
BEGIN
for resultInfo IN result loop
if resultInfo.MAJOR1SCORE >60 AND resultInfo.MAJOR2SCORE >60
and resultInfo.MAJOR3SCORE >60 AND resultInfo.totalScore >400 THEN
UPDATE STUDENT set STATUS= '1' WHERE current OF result;
dbms_output.put_line(resultInfo.sid||'-'||resultInfo.sname||'-已录取');
ELSE
UPDATE STUDENT set STATUS= '0' WHERE current OF result;
dbms_output.put_line(resultInfo.sid||'-'||resultInfo.sname||'-未录取');
end if;
end loop;
END;
CREATE OR REPLACE
function insert_emp
(v_EMPNO NUMBER,v_ENAME VARCHAR2,v_JOB VARCHAR2,v_MGR NUMBER,v_HIREDATE DATE,v_SAL NUMBER,v_COMM NUMBER,v_DEPTNO NUMBER)
return NUMBER
IS
BEGIN
INSERT into EMP values(v_empno,v_ENAME,v_JOB,v_MGR,v_HIREDATE,v_SAL,v_COMM,v_DEPTNO);
return 1;
end insert_emp;
创建存储过程调用方法:
create or replace PROCEDURE function_test(
v_EMPNO NUMBER,
v_ENAME VARCHAR2,
v_JOB VARCHAR2,
v_MGR NUMBER,
v_HIREDATE DATE,
v_SAL NUMBER,
v_COMM NUMBER,
v_DEPTNO NUMBER,
v_out out number)
AS
BEGIN
v_out:= insert_emp(v_EMPNO,v_ENAME,v_JOB,v_MGR,v_HIREDATE,v_SAL,v_COMM,v_DEPTNO);
end;
调用存储过程:
DECLARE
p_out number;
BEGIN
function_test('7347', 'Kitty', 'CLERK', '7902', TO_DATE('1980-12-17 00:00:00', 'YYYY-MM-DD HH24:MI:SS'), '800', null, '20',p_out);
end;
包:
1、定义
create or replace package my_1
is
PROCEDURE sayhello(vname varchar2);
end;
2、实现包体
CREATE or replace package body my_1
is
PROCEDURE sayhello(vname varchar2)
IS
BEGIN
dbms_output.putline('hello'||vname);
end;
end;
3、创建存储过程调用
create or replace PROCEDURE package_test(p1 string)
AS
BEGIN
my_1.sayhello(p1);
end;
BEGIN
package_test('a');
end;
Sequence
CREATE sequence num
INCREMENT BY 1
START WITH 1
nomaxvalue
nocycle
cache 10;
主要有num.nextval,num.currval属性
游标:
DECLARE
cursor result is SELECT * from STUDENT for UPDATE ;
resultInfo STUDENT%rowtype;
i_Status STUDENT.status%type;
BEGIN
for resultInfo IN result loop
if resultInfo.MAJOR1SCORE >60 AND resultInfo.MAJOR2SCORE >60
and resultInfo.MAJOR3SCORE >60 AND resultInfo.totalScore >400 THEN
UPDATE STUDENT set STATUS= '1' WHERE current OF result;
dbms_output.put_line(resultInfo.sid||'-'||resultInfo.sname||'-已录取');
ELSE
UPDATE STUDENT set STATUS= '0' WHERE current OF result;
dbms_output.put_line(resultInfo.sid||'-'||resultInfo.sname||'-未录取');
end if;
end loop;
END;
相关文章推荐
- Oracle 中DECODE 函数的 使用简介
- 我的oracle笔记三(系统函数和系统包使用方面)
- javascript入门系列演示·函数的定义以及简单参数使用,调用函数 .txt
- Oracle不支持在select语句中调用自定义函数时使用自定义类型作参数?
- Oracle中Decode()函数使用技巧
- Oracle 分析函数的使用
- Oracle中Decode()函数的使用 推荐
- 常用oracle函数使用实例
- Oracle中Decode()函数使用技巧
- Oracle分析函数RANK(),ROW_NUMBER(),LAG()等的使用方法(转载)
- 常用的oracle函数使用说明(二)
- Oracle分析函数的使用
- Oracle 分析函数使用介绍
- Oracle 中DECODE 函数的使用简介
- test oracle array的使用,通过type来自定义array
- 我的oracle笔记三(系统函数和系统包使用方面)
- Oracle 分析函数的使用(一)
- 常用的oracle函数使用说明(一)
- Oracle 分析函数的使用
- Oracle 分析函数使用介绍