oracle学习1 基于oracle数据库的PLSQL编程以及存储过程的创建和使用视频 (2)

---使用游标查询person中所有的的姓名和身高,并将其打印出来
declare
---声明游标
CURSOR C_PERSON is
select NAME, AGE from PERSON;
--声明变量接收游标中的数据
v_NAME PERSON.NAME%TYPE;
v_AGE PERSON.AGE%TYPE;
BEGIN
--打开游标
OPEN C_PERSON;
LOOP
--获取游标中的数据
FETCH C_PERSON INTO V_NAME, V_AGE;
--如果没有指向的语句了,就退出
EXIT WHEN C_PERSON%NOTFOUND;
--打印输出
DBMS_OUTPUT.put_line(V_NAME || \'--\' || V_AGE);
END LOOP;
--关闭游标
CLOSE C_PERSON;
end;

8、带参数的游标

oracle学习1 基于oracle数据库的PLSQL编程以及存储过程的创建和使用视频

---使用游标查询person中【身高】为【1.68】的姓名和身高,并将其打印出来
DECLARE
---声明游标
CURSOR C_PERSON(V_HEIGHT person.height%type) is
select NAME, AGE from PERSON where height = V_height;
--声明变量接收游标中的数据
v_NAME PERSON.NAME%TYPE;
v_AGE PERSON.AGE%TYPE;
BEGIN
--打开游标
OPEN C_PERSON(1.68);
LOOP
--获取游标中的数据
FETCH C_PERSON
INTO V_NAME, V_AGE;
--如果没有指向的语句了,就退出
EXIT WHEN C_PERSON%NOTFOUND;
--打印输出
DBMS_OUTPUT.put_line(V_NAME || \'--\' || V_AGE);
END LOOP;
--关闭游标
CLOSE C_PERSON;
END;

9、存储过程

以上是在TestWindow中执行的,可以进行调试

如果写的是procedure,就不能调试了

exec p_hello   用这个来在sqlplus调用存储过程。

is as 是可以互相替换的。

存储过程中没有declare关键字,decalre用在语句块中。

10、带输入参数的存储过程

oracle学习1 基于oracle数据库的PLSQL编程以及存储过程的创建和使用视频

create or replace procedure p_queryNameAgeHeight(v_name in person.name%type) as
v_age person.age%type;
v_height person.height%type;
begin
select age,height into v_age,v_height from person where person.name=v_name;
dbms_output.put_line(v_name||\'--\'||v_age||\'--\'||v_height);
end p_queryNameAgeHeight;

执行

exec p_querynameageheight(\'may\');

11、带输出参数的存储过程

重新写一个带输出参数的存储过程

oracle学习1 基于oracle数据库的PLSQL编程以及存储过程的创建和使用视频

通过testWindow写代码调用之

oracle学习1 基于oracle数据库的PLSQL编程以及存储过程的创建和使用视频

存储过程和testWindow中的输出都显示在这里了。

oracle学习1 基于oracle数据库的PLSQL编程以及存储过程的创建和使用视频

create or replace procedure p_queryNameAgeHeight(v_name in person.name%type,
v_height in out person.height%type) as
v_age person.age%type;

begin
select age, height
into v_age, v_height
from person
where person.name = v_name;
dbms_output.put_line(v_name || \'--\' || v_age || \'--\' || v_height);
end p_queryNameAgeHeight;

-- Created on 2019/11/14 by LENOVO
declare
v_height person.height%type;
begin
-- Test statements here
p_querynameageheight(\'may\',v_height);
dbms_output.put_line(v_height);
end;

通常在程序中,使用方法调用存储过程。

【存储函数】类似于 【存储过程】,唯一的区别是 【存储函数】必须有返回值,而【存储过程】没有返回值,但可以通过输出参数代替。

目前大家调用的都是【存储过程】,因为相对灵活。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zggfdz.html