ORACLE数据库PL/SQL过程体、游标、存储过程

PL/SQL过程体
DECLARE
      --声明部分
BEGIN
      --执行部分
END;      
DECLARE
	sname varchar(20):='Jack';
BEGIN
	sname :='HI!'||sname;
	DBMS_OUTPUT.PUT_LINE(sname);
END;
--结果输出 : HI!Jack

游标
游标是指向查询结果集的一个指针,通过游标可以将查询结果集中的记录逐一取出。

游标声明
CURSOR 游标名
IS SELECT结果集查询语句;
执行游标
OPEN 游标名
FETCH 游标名 INTO 变量1[,变量2..]
或者
FETCH 游标名 INTO 游标变量;
CLOSE;

游标属性:%FOUND和%NOTFOUND
%FOUND:用于判断游标是否从结果集中提取数据。如果提取到数据,则返回值为TRUE,否则返回值为FALSE。
%NOTFOUND:与%FOUND相反,如果提取到数据则返回值为FALSE,否则为TRUE。

DECLARE
	CURSOR mycursor
	IS SELECT sname FROM student_0;
	row_cursor  mycursor%ROWTYPE;
BEGIN
	OPEN mycursor;
	LOOP
		FETCH mycursor INTO row_cursor;
		EXIT WHEN mycursor%NOTFOUND;
		DBMS_OUTPUT.PUT_LINE(row_cursor.sname);
	END LOOP;
	CLOSE mycursor;
END;
DECLARE
	CURSOR mycursor
	IS SELECT sname FROM student_0;
BEGIN
	FOR row_cursor IN mycursor LOOP
		DBMS_OUTPUT.PUT_LINE(row_cursor.sname);
	END LOOP;
END;	

创建存储过程

CREATE [OR REPLACE] PROCEDURE 过程名(参数1 [IN | OUT | IN OUT] 数据类型,参数2[IN | OUT | IN OUT] 数据类型...)
IS | AS
PL/SQL 过程体语句;

调用存储过程

BEGIN
	过程名[参数];
END;

删除存储过程

DROP PROCEDURE 过程名;
CREATE OR REPLACE PROCEDURE SP_MYEMP(P_DEPTNO IN NUMBER,
									 P_HIREDATE OUT DATE,
									 P_JOB_ENAME IN OUT VARCHAR2)
AS
	V_SAL NUMBER;
BEGIN
	SELECT E.ENAME,E.SAL,E.HIRDATE
	INTO P_JOB_ENAME,V_SAL,P_HIRDATE
	FROM EMP E
	WHERE E.DEPTNO=P_DEPTNO
	AND E.JOB=P_JOB_ENAME;
	DBMS_OUTPUT.PUT_LINE(P_JOB_NAME||' '||V_SAL||' '||P_HIREDATE);
END;
	--调用存储过程
DECLARE 
	V_JOB_ENAME varchar2(20) :='MANAGER';
	V_HIREDATE DATE;
BEGIN
	SP_MYEMP(20,V_HIREDATE,V_JOB_ENAME);
END;

包就是把相关的存储过程、函数、变量、常量和游标等PL/SQL组合在一起,并赋予一定管理功能的程序块。
创建包体

CREATE [OR REPLACE] PACKAGE BODY mypackage
AS | IS

PROCEDURE 过程名(参数)
IS | AS
BEGIN
	过程体;
END [过程名];

END;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值