Oracle从入门到精通(8)
-----存储过程
-----游标
什么是存储过程?它有什么好处?
答:存储过程是指提前编写好,并且存储在数据库的一些语句
好处:由于这些语句是提前编写好,并且已经存在数据库,所以它的不需要通过程序传递语句到数据库,而是在数据库
直接运行,所以,速度会更快------使用它的主要目的,让程序的性能更好,运行速度更快
存储过程的分类有哪些?
答:存储过程可分为两种类型:
1、不带参数的存储过程
2、带参数的存储过程(输入参数、输出参数、输入输出参数)
--不带参数的存储过程语法:
create or replace procedure inf_proc
as
begin
insert into inf values(2,'bruce',21);
commit;
end;
--调用存储过程的两种方式:
--第一种:
begin
inf_proc();
end;
--第二种:
在命令提示行下编写: call 存储过程名称();
/****************************************************************************/
参数的类型为: in --表示是一个输入参数
参数的类型为: out --表示是一个输出参数
参数的类型为: in out --表示是一个输入输出参数
--
带参数的存储过程----输入参数
语法: 参数名称 参数类型 数据类型
create or replace procedure inf_proc(in_id in number,in_name in varchar2,in_age in number)
as
begin
insert into inf values(in_id,in_name,in_age);
commit;
end;
--调用参数的存过程
begin
inf_proc(3,'austin',23);
end;
-- 带输出参数的存储过程 (把数据从存储过程中提出来)
语法:
create or replace procedure inf_proc(in_id in number,out_name out varchar2,out_age out number)
as
begin
select name,age into out_name,out_age from inf where id=in_id;
end;
------调用带返回值的存储过程
declare
id number;
name varchar2(20);
age number;
begin
id:=&请输入编号;
inf_proc(in_id =>id,out_name => name,out_age => age);
dbms_output.put_line('姓名是:'||name);
dbms_output.put_line('年龄是:'||age);
end;
------------------------------------------
-- 带输入输出参数的存储过程
语法:
create or replace procedure inf_proc(in_id in out number,out_name out varchar2,out_age out number)
as
begin
select id,name,age into in_id,out_name,out_age from inf where id=in_id;
end;
declare
id number;
name varchar2(20);
age number;
begin
id:=&请输入编号;
inf_proc(in_id =>id,out_name => name,out_age => age);
dbms_output.put_line('编号:'||id);
dbms_output.put_line('姓名是:'||name);
dbms_output.put_line('年龄是:'||age);
end;
drop table inf;
create table inf
(
id number primary key,
name varchar2(20) not null,
age number
)
------------------------------------------------------------
Oracle中的游标
它是用于指数据集中的某一行记录的一个标识符
Oracle中的游标分类:
1、静态游标 (声明游标时,必须指定,该游标指向的是哪一张表,指定以后就不允许再改变)
A、隐式游标 (由系统提供)
B、显示游标 (由用户创建)
2、动态游标 (声明游标时,不必指定指向的是哪一张表,在打开游开游标的时候再决定)
-------
静态游标---> 隐式游标
1 sql%found ---执行成功返回true,执行失败返回false
2 sql%notfound ---执行成功返回false,执行失败返回true
3 sql%rowcount ---执行语句以后,有几行语句操作成功
begin
update inf set name='abc' where id>2;
dbms_output.put_line('修改的行数是:'||sql%rowcount);
end;
-------------------------------------------------------------------------------
-- sql%found
begin
update inf set name='bruceLee' where id=5678;
if(sql%found)
then dbms_output.put_line('修改数据成功!');
else
dbms_output.put_line('修改数据成失败!');
end if;
end;
-------------------------------------------
静态游标---->显示游标 (用户自己创建)
使用显示游标基本步骤:
--1 声明游标
--2 打开游标
--3 利用游标提取数据
--4 关闭游标
declare
cursor my_cur is select id,name,age from inf where id=3;
mid number;
mname varchar2(20);
mage number;
begin
open my_cur;
fetch my_cur into mid,mname,mage;
dbms_output.put_line('编号'||mid);
dbms_output.put_line('姓名'||mname);
dbms_output.put_line('年龄'||mage);
close my_cur;
end;
--------------------------------------------------------
declare
cursor my_cur is select id,name,age from inf where id=3;
mid inf.id%type; --mid的数据类型与 inf表中的id字段数据类型保持一致
mname inf.name%type;
mage inf.age%type;
begin
open my_cur;
fetch my_cur into mid,mname,mage;
dbms_output.put_line('编号'||mid);
dbms_output.put_line('姓名'||mname);
dbms_output.put_line('年龄'||mage);
close my_cur;
end;
------------------------------------------------------------------
declare
cursor my_cur is select * from inf where id=5;
r inf%rowtype; --声明变量r,它的类型为inf表中的行的类型
begin
open my_cur;
fetch my_cur into r;
dbms_output.put_line('编号'||r.id);
dbms_output.put_line('姓名'||r.name);
dbms_output.put_line('年龄'||r.age);
close my_cur;
end;
----------------------------------------------------------------
declare
cursor my_cur is select * from inf ;
r inf%rowtype; --声明变量r,它的类型为inf表中的行的类型
begin
open my_cur;
fetch my_cur into r;
while(my_cur%found)
loop
dbms_output.put_line(r.id||' '||r.name||' '||r.age);
fetch my_cur into r;
end loop;
close my_cur;
end;
--------------------------------------------------------------------
select * from inf where id=1;
select * from inf
oracle从入门到精通(8)
-----存储过程
-----游标
什么是存储过程?它有什么好处?
答:存储过程是指提前编写好,并且存储在数据库的一些语句
好处:由于这些语句是提前编写好,并且已经存在数据库,所以它的不需要通过程序传递语句到数据库,而是在数据库
直接运行,所以,速度会更快------使用它的主要目的,让程序的性能更好,运行速度更快
存储过程的分类有哪些?
答:存储过程可分为两种类型:
1、不带参数的存储过程
2、带参数的存储过程(输入参数、输出参数、输入输出参数)
--不带参数的存储过程语法:
create or replace procedure inf_proc
as
begin
insert into inf values(2,'bruce',21);
commit;
end;
--调用存储过程的两种方式:
--第一种:
begin
inf_proc();
end;
--第二种:
在命令提示行下编写: call 存储过程名称();
/****************************************************************************/
参数的类型为: in --表示是一个输入参数
参数的类型为: out --表示是一个输出参数
参数的类型为: in out --表示是一个输入输出参数
--
带参数的存储过程----输入参数
语法: 参数名称 参数类型 数据类型
create or replace procedure inf_proc(in_id in number,in_name in varchar2,in_age in number)
as
begin
insert into inf values(in_id,in_name,in_age);
commit;
end;
--调用参数的存过程
begin
inf_proc(3,'austin',23);
end;
-- 带输出参数的存储过程 (把数据从存储过程中提出来)
语法:
create or replace procedure inf_proc(in_id in number,out_name out varchar2,out_age out number)
as
begin
select name,age into out_name,out_age from inf where id=in_id;
end;
------调用带返回值的存储过程
declare
id number;
name varchar2(20);
age number;
begin
id:=&请输入编号;
inf_proc(in_id =>id,out_name => name,out_age => age);
dbms_output.put_line('姓名是:'||name);
dbms_output.put_line('年龄是:'||age);
end;
------------------------------------------
-- 带输入输出参数的存储过程
语法:
create or replace procedure inf_proc(in_id in out number,out_name out varchar2,out_age out number)
as
begin
select id,name,age into in_id,out_name,out_age from inf where id=in_id;
end;
declare
id number;
name varchar2(20);
age number;
begin
id:=&请输入编号;
inf_proc(in_id =>id,out_name => name,out_age => age);
dbms_output.put_line('编号:'||id);
dbms_output.put_line('姓名是:'||name);
dbms_output.put_line('年龄是:'||age);
end;
drop table inf;
create table inf
(
id number primary key,
name varchar2(20) not null,
age number
)
------------------------------------------------------------
Oracle中的游标
它是用于指数据集中的某一行记录的一个标识符
Oracle中的游标分类:
1、静态游标 (声明游标时,必须指定,该游标指向的是哪一张表,指定以后就不允许再改变)
A、隐式游标 (由系统提供)
B、显示游标 (由用户创建)
2、动态游标 (声明游标时,不必指定指向的是哪一张表,在打开游开游标的时候再决定)
-------
静态游标---> 隐式游标
1 sql%found ---执行成功返回true,执行失败返回false
2 sql%notfound ---执行成功返回false,执行失败返回true
3 sql%rowcount ---执行语句以后,有几行语句操作成功
begin
update inf set name='abc' where id>2;
dbms_output.put_line('修改的行数是:'||sql%rowcount);
end;
-------------------------------------------------------------------------------
-- sql%found
begin
update inf set name='bruceLee' where id=5678;
if(sql%found)
then dbms_output.put_line('修改数据成功!');
else
dbms_output.put_line('修改数据成失败!');
end if;
end;
-------------------------------------------
静态游标---->显示游标 (用户自己创建)
使用显示游标基本步骤:
--1 声明游标
--2 打开游标
--3 利用游标提取数据
--4 关闭游标
declare
cursor my_cur is select id,name,age from inf where id=3;
mid number;
mname varchar2(20);
mage number;
begin
open my_cur;
fetch my_cur into mid,mname,mage;
dbms_output.put_line('编号'||mid);
dbms_output.put_line('姓名'||mname);
dbms_output.put_line('年龄'||mage);
close my_cur;
end;
--------------------------------------------------------
declare
cursor my_cur is select id,name,age from inf where id=3;
mid inf.id%type; --mid的数据类型与 inf表中的id字段数据类型保持一致
mname inf.name%type;
mage inf.age%type;
begin
open my_cur;
fetch my_cur into mid,mname,mage;
dbms_output.put_line('编号'||mid);
dbms_output.put_line('姓名'||mname);
dbms_output.put_line('年龄'||mage);
close my_cur;
end;
------------------------------------------------------------------
declare
cursor my_cur is select * from inf where id=5;
r inf%rowtype; --声明变量r,它的类型为inf表中的行的类型
begin
open my_cur;
fetch my_cur into r;
dbms_output.put_line('编号'||r.id);
dbms_output.put_line('姓名'||r.name);
dbms_output.put_line('年龄'||r.age);
close my_cur;
end;
----------------------------------------------------------------
declare
cursor my_cur is select * from inf ;
r inf%rowtype; --声明变量r,它的类型为inf表中的行的类型
begin
open my_cur;
fetch my_cur into r;
while(my_cur%found)
loop
dbms_output.put_line(r.id||' '||r.name||' '||r.age);
fetch my_cur into r;
end loop;
close my_cur;
end;
--------------------------------------------------------------------
select * from inf where id=1;
select * from inf
oracle从入门到精通(8)
-----存储过程
-----游标
什么是存储过程?它有什么好处?
答:存储过程是指提前编写好,并且存储在数据库的一些语句
好处:由于这些语句是提前编写好,并且已经存在数据库,所以它的不需要通过程序传递语句到数据库,而是在数据库
直接运行,所以,速度会更快------使用它的主要目的,让程序的性能更好,运行速度更快
存储过程的分类有哪些?
答:存储过程可分为两种类型:
1、不带参数的存储过程
2、带参数的存储过程(输入参数、输出参数、输入输出参数)
--不带参数的存储过程语法:
create or replace procedure inf_proc
as
begin
insert into inf values(2,'bruce',21);
commit;
end;
--调用存储过程的两种方式:
--第一种:
begin
inf_proc();
end;
--第二种:
在命令提示行下编写: call 存储过程名称();
/****************************************************************************/
参数的类型为: in --表示是一个输入参数
参数的类型为: out --表示是一个输出参数
参数的类型为: in out --表示是一个输入输出参数
--
带参数的存储过程----输入参数
语法: 参数名称 参数类型 数据类型
create or replace procedure inf_proc(in_id in number,in_name in varchar2,in_age in number)
as
begin
insert into inf values(in_id,in_name,in_age);
commit;
end;
--调用参数的存过程
begin
inf_proc(3,'austin',23);
end;
-- 带输出参数的存储过程 (把数据从存储过程中提出来)
语法:
create or replace procedure inf_proc(in_id in number,out_name out varchar2,out_age out number)
as
begin
select name,age into out_name,out_age from inf where id=in_id;
end;
------调用带返回值的存储过程
declare
id number;
name varchar2(20);
age number;
begin
id:=&请输入编号;
inf_proc(in_id =>id,out_name => name,out_age => age);
dbms_output.put_line('姓名是:'||name);
dbms_output.put_line('年龄是:'||age);
end;
------------------------------------------
-- 带输入输出参数的存储过程
语法:
create or replace procedure inf_proc(in_id in out number,out_name out varchar2,out_age out number)
as
begin
select id,name,age into in_id,out_name,out_age from inf where id=in_id;
end;
declare
id number;
name varchar2(20);
age number;
begin
id:=&请输入编号;
inf_proc(in_id =>id,out_name => name,out_age => age);
dbms_output.put_line('编号:'||id);
dbms_output.put_line('姓名是:'||name);
dbms_output.put_line('年龄是:'||age);
end;
drop table inf;
create table inf
(
id number primary key,
name varchar2(20) not null,
age number
)
------------------------------------------------------------
Oracle中的游标
它是用于指数据集中的某一行记录的一个标识符
Oracle中的游标分类:
1、静态游标 (声明游标时,必须指定,该游标指向的是哪一张表,指定以后就不允许再改变)
A、隐式游标 (由系统提供)
B、显示游标 (由用户创建)
2、动态游标 (声明游标时,不必指定指向的是哪一张表,在打开游开游标的时候再决定)
-------
静态游标---> 隐式游标
1 sql%found ---执行成功返回true,执行失败返回false
2 sql%notfound ---执行成功返回false,执行失败返回true
3 sql%rowcount ---执行语句以后,有几行语句操作成功
begin
update inf set name='abc' where id>2;
dbms_output.put_line('修改的行数是:'||sql%rowcount);
end;
-------------------------------------------------------------------------------
-- sql%found
begin
update inf set name='bruceLee' where id=5678;
if(sql%found)
then dbms_output.put_line('修改数据成功!');
else
dbms_output.put_line('修改数据成失败!');
end if;
end;
-------------------------------------------
静态游标---->显示游标 (用户自己创建)
使用显示游标基本步骤:
--1 声明游标
--2 打开游标
--3 利用游标提取数据
--4 关闭游标
declare
cursor my_cur is select id,name,age from inf where id=3;
mid number;
mname varchar2(20);
mage number;
begin
open my_cur;
fetch my_cur into mid,mname,mage;
dbms_output.put_line('编号'||mid);
dbms_output.put_line('姓名'||mname);
dbms_output.put_line('年龄'||mage);
close my_cur;
end;
--------------------------------------------------------
declare
cursor my_cur is select id,name,age from inf where id=3;
mid inf.id%type; --mid的数据类型与 inf表中的id字段数据类型保持一致
mname inf.name%type;
mage inf.age%type;
begin
open my_cur;
fetch my_cur into mid,mname,mage;
dbms_output.put_line('编号'||mid);
dbms_output.put_line('姓名'||mname);
dbms_output.put_line('年龄'||mage);
close my_cur;
end;
------------------------------------------------------------------
declare
cursor my_cur is select * from inf where id=5;
r inf%rowtype; --声明变量r,它的类型为inf表中的行的类型
begin
open my_cur;
fetch my_cur into r;
dbms_output.put_line('编号'||r.id);
dbms_output.put_line('姓名'||r.name);
dbms_output.put_line('年龄'||r.age);
close my_cur;
end;
----------------------------------------------------------------
declare
cursor my_cur is select * from inf ;
r inf%rowtype; --声明变量r,它的类型为inf表中的行的类型
begin
open my_cur;
fetch my_cur into r;
while(my_cur%found)
loop
dbms_output.put_line(r.id||' '||r.name||' '||r.age);
fetch my_cur into r;
end loop;
close my_cur;
end;
--------------------------------------------------------------------
select * from inf where id=1;
select * from inf
oracle从入门到精通(8)
-----存储过程
-----游标
什么是存储过程?它有什么好处?
答:存储过程是指提前编写好,并且存储在数据库的一些语句
好处:由于这些语句是提前编写好,并且已经存在数据库,所以它的不需要通过程序传递语句到数据库,而是在数据库
直接运行,所以,速度会更快------使用它的主要目的,让程序的性能更好,运行速度更快
存储过程的分类有哪些?
答:存储过程可分为两种类型:
1、不带参数的存储过程
2、带参数的存储过程(输入参数、输出参数、输入输出参数)
--不带参数的存储过程语法:
create or replace procedure inf_proc
as
begin
insert into inf values(2,'bruce',21);
commit;
end;
--调用存储过程的两种方式:
--第一种:
begin
inf_proc();
end;
--第二种:
在命令提示行下编写: call 存储过程名称();
/****************************************************************************/
参数的类型为: in --表示是一个输入参数
参数的类型为: out --表示是一个输出参数
参数的类型为: in out --表示是一个输入输出参数
--
带参数的存储过程----输入参数
语法: 参数名称 参数类型 数据类型
create or replace procedure inf_proc(in_id in number,in_name in varchar2,in_age in number)
as
begin
insert into inf values(in_id,in_name,in_age);
commit;
end;
--调用参数的存过程
begin
inf_proc(3,'austin',23);
end;
-- 带输出参数的存储过程 (把数据从存储过程中提出来)
语法:
create or replace procedure inf_proc(in_id in number,out_name out varchar2,out_age out number)
as
begin
select name,age into out_name,out_age from inf where id=in_id;
end;
------调用带返回值的存储过程
declare
id number;
name varchar2(20);
age number;
begin
id:=&请输入编号;
inf_proc(in_id =>id,out_name => name,out_age => age);
dbms_output.put_line('姓名是:'||name);
dbms_output.put_line('年龄是:'||age);
end;
------------------------------------------
-- 带输入输出参数的存储过程
语法:
create or replace procedure inf_proc(in_id in out number,out_name out varchar2,out_age out number)
as
begin
select id,name,age into in_id,out_name,out_age from inf where id=in_id;
end;
declare
id number;
name varchar2(20);
age number;
begin
id:=&请输入编号;
inf_proc(in_id =>id,out_name => name,out_age => age);
dbms_output.put_line('编号:'||id);
dbms_output.put_line('姓名是:'||name);
dbms_output.put_line('年龄是:'||age);
end;
drop table inf;
create table inf
(
id number primary key,
name varchar2(20) not null,
age number
)
------------------------------------------------------------
Oracle中的游标
它是用于指数据集中的某一行记录的一个标识符
Oracle中的游标分类:
1、静态游标 (声明游标时,必须指定,该游标指向的是哪一张表,指定以后就不允许再改变)
A、隐式游标 (由系统提供)
B、显示游标 (由用户创建)
2、动态游标 (声明游标时,不必指定指向的是哪一张表,在打开游开游标的时候再决定)
-------
静态游标---> 隐式游标
1 sql%found ---执行成功返回true,执行失败返回false
2 sql%notfound ---执行成功返回false,执行失败返回true
3 sql%rowcount ---执行语句以后,有几行语句操作成功
begin
update inf set name='abc' where id>2;
dbms_output.put_line('修改的行数是:'||sql%rowcount);
end;
-------------------------------------------------------------------------------
-- sql%found
begin
update inf set name='bruceLee' where id=5678;
if(sql%found)
then dbms_output.put_line('修改数据成功!');
else
dbms_output.put_line('修改数据成失败!');
end if;
end;
-------------------------------------------
静态游标---->显示游标 (用户自己创建)
使用显示游标基本步骤:
--1 声明游标
--2 打开游标
--3 利用游标提取数据
--4 关闭游标
declare
cursor my_cur is select id,name,age from inf where id=3;
mid number;
mname varchar2(20);
mage number;
begin
open my_cur;
fetch my_cur into mid,mname,mage;
dbms_output.put_line('编号'||mid);
dbms_output.put_line('姓名'||mname);
dbms_output.put_line('年龄'||mage);
close my_cur;
end;
--------------------------------------------------------
declare
cursor my_cur is select id,name,age from inf where id=3;
mid inf.id%type; --mid的数据类型与 inf表中的id字段数据类型保持一致
mname inf.name%type;
mage inf.age%type;
begin
open my_cur;
fetch my_cur into mid,mname,mage;
dbms_output.put_line('编号'||mid);
dbms_output.put_line('姓名'||mname);
dbms_output.put_line('年龄'||mage);
close my_cur;
end;
------------------------------------------------------------------
declare
cursor my_cur is select * from inf where id=5;
r inf%rowtype; --声明变量r,它的类型为inf表中的行的类型
begin
open my_cur;
fetch my_cur into r;
dbms_output.put_line('编号'||r.id);
dbms_output.put_line('姓名'||r.name);
dbms_output.put_line('年龄'||r.age);
close my_cur;
end;
----------------------------------------------------------------
declare
cursor my_cur is select * from inf ;
r inf%rowtype; --声明变量r,它的类型为inf表中的行的类型
begin
open my_cur;
fetch my_cur into r;
while(my_cur%found)
loop
dbms_output.put_line(r.id||' '||r.name||' '||r.age);
fetch my_cur into r;
end loop;
close my_cur;
end;
--------------------------------------------------------------------
select * from inf where id=1;
select * from inf
Oracle第八章
-----存储过程
-----游标
什么是存储过程?它有什么好处?
答:存储过程是指提前编写好,并且存储在数据库的一些语句
好处:由于这些语句是提前编写好,并且已经存在数据库,所以它的不需要通过程序传递语句到数据库,而是在数据库
直接运行,所以,速度会更快------使用它的主要目的,让程序的性能更好,运行速度更快
存储过程的分类有哪些?
答:存储过程可分为两种类型:
1、不带参数的存储过程
2、带参数的存储过程(输入参数、输出参数、输入输出参数)
--不带参数的存储过程语法:
create or replace procedure inf_proc
as
begin
insert into inf values(2,'bruce',21);
commit;
end;
--调用存储过程的两种方式:
--第一种:
begin
inf_proc();
end;
--第二种:
在命令提示行下编写: call 存储过程名称();
/****************************************************************************/
参数的类型为: in --表示是一个输入参数
参数的类型为: out --表示是一个输出参数
参数的类型为: in out --表示是一个输入输出参数
--
带参数的存储过程----输入参数
语法: 参数名称 参数类型 数据类型
create or replace procedure inf_proc(in_id in number,in_name in varchar2,in_age in number)
as
begin
insert into inf values(in_id,in_name,in_age);
commit;
end;
--调用参数的存过程
begin
inf_proc(3,'austin',23);
end;
-- 带输出参数的存储过程 (把数据从存储过程中提出来)
语法:
create or replace procedure inf_proc(in_id in number,out_name out varchar2,out_age out number)
as
begin
select name,age into out_name,out_age from inf where id=in_id;
end;
------调用带返回值的存储过程
declare
id number;
name varchar2(20);
age number;
begin
id:=&请输入编号;
inf_proc(in_id =>id,out_name => name,out_age => age);
dbms_output.put_line('姓名是:'||name);
dbms_output.put_line('年龄是:'||age);
end;
------------------------------------------
-- 带输入输出参数的存储过程
语法:
create or replace procedure inf_proc(in_id in out number,out_name out varchar2,out_age out number)
as
begin
select id,name,age into in_id,out_name,out_age from inf where id=in_id;
end;
declare
id number;
name varchar2(20);
age number;
begin
id:=&请输入编号;
inf_proc(in_id =>id,out_name => name,out_age => age);
dbms_output.put_line('编号:'||id);
dbms_output.put_line('姓名是:'||name);
dbms_output.put_line('年龄是:'||age);
end;
drop table inf;
create table inf
(
id number primary key,
name varchar2(20) not null,
age number
)
------------------------------------------------------------
Oracle中的游标
它是用于指数据集中的某一行记录的一个标识符
Oracle中的游标分类:
1、静态游标 (声明游标时,必须指定,该游标指向的是哪一张表,指定以后就不允许再改变)
A、隐式游标 (由系统提供)
B、显示游标 (由用户创建)
2、动态游标 (声明游标时,不必指定指向的是哪一张表,在打开游开游标的时候再决定)
-------
静态游标---> 隐式游标
1 sql%found ---执行成功返回true,执行失败返回false
2 sql%notfound ---执行成功返回false,执行失败返回true
3 sql%rowcount ---执行语句以后,有几行语句操作成功
begin
update inf set name='abc' where id>2;
dbms_output.put_line('修改的行数是:'||sql%rowcount);
end;
-------------------------------------------------------------------------------
-- sql%found
begin
update inf set name='bruceLee' where id=5678;
if(sql%found)
then dbms_output.put_line('修改数据成功!');
else
dbms_output.put_line('修改数据成失败!');
end if;
end;
-------------------------------------------
静态游标---->显示游标 (用户自己创建)
使用显示游标基本步骤:
--1 声明游标
--2 打开游标
--3 利用游标提取数据
--4 关闭游标
declare
cursor my_cur is select id,name,age from inf where id=3;
mid number;
mname varchar2(20);
mage number;
begin
open my_cur;
fetch my_cur into mid,mname,mage;
dbms_output.put_line('编号'||mid);
dbms_output.put_line('姓名'||mname);
dbms_output.put_line('年龄'||mage);
close my_cur;
end;
--------------------------------------------------------
declare
cursor my_cur is select id,name,age from inf where id=3;
mid inf.id%type; --mid的数据类型与 inf表中的id字段数据类型保持一致
mname inf.name%type;
mage inf.age%type;
begin
open my_cur;
fetch my_cur into mid,mname,mage;
dbms_output.put_line('编号'||mid);
dbms_output.put_line('姓名'||mname);
dbms_output.put_line('年龄'||mage);
close my_cur;
end;
------------------------------------------------------------------
declare
cursor my_cur is select * from inf where id=5;
r inf%rowtype; --声明变量r,它的类型为inf表中的行的类型
begin
open my_cur;
fetch my_cur into r;
dbms_output.put_line('编号'||r.id);
dbms_output.put_line('姓名'||r.name);
dbms_output.put_line('年龄'||r.age);
close my_cur;
end;
----------------------------------------------------------------
declare
cursor my_cur is select * from inf ;
r inf%rowtype; --声明变量r,它的类型为inf表中的行的类型
begin
open my_cur;
fetch my_cur into r;
while(my_cur%found)
loop
dbms_output.put_line(r.id||' '||r.name||' '||r.age);
fetch my_cur into r;
end loop;
close my_cur;
end;
--------------------------------------------------------------------
select * from inf where id=1;
select * from inf