oracle 函数、包的定义及使用

方法定义:
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;






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值