关于Oracle中select * from where 的存储过程
来源:互联网 发布:中国软件市场规模 编辑:程序博客网 时间:2024/05/18 04:02
熟悉SQL Server的人,都会用这样的方法来创建存储过程:(查询student表的信息)
create procedure pro_sel_all
as
select * from student
由于在Oracle中没有一个类型去接受一个结果集,而在SQL Server中却是由数据库系统自动返回结果集,然后显示。故如果我们用类似上面的方法来创建,如下:
create or replace procedure pro_sel_all
as
begin
select * from student;
end procedure pro_sel_all;
则会报错:Warning: Procedure created with compilation errors.
那么在解决这个问题的时候有两个方法可以选择,第一种就是用游标来返回结果集合。
create or replace procedure pro_sel_all
is
cursor cur_sel_all is select sno,sname,sage,ssёx from student; --定义游标
c_sno student.sno%type; --声明变量分别保存student的各列
c_sname student.sname%type;
c_sage student.sage%type;
c_ssex student.ssex%type;
begin
open cur_sel_all;
loop --循环取数,并将游标数据填充到返回纪录集合中
fetch cur_sel_all into c_sno,c_sname,c_sage,c_ssex;
ёxit when cur_sel_all%NOTFOUND; --循环退出条件
if cur_sel_all%FOUND then --打印数据
dbms_output.put_line(c_sno||' '||c_sname||' '||c_sage||' '||c_ssex);
end if;
end loop;
close cur_sel_all;
end;
/
exec pro_sel_all; --执行存储过程
我们也可以要用包(Package)来完成。在包的说明部分中声明游标和存储过程,在包体中给出存储过程。
则上面的存储过程,写为:
create or replace package pack_ sel_all ------创建包的说明部分
as
type mycursor is ref cursor; --声明游标mycursor;
procedure pro_sel_all (curp out mycursor ); --声明存储过程pro_sel_all;
end pack_sel_all;
/
create or replace package body pack_sel_all ------创建包体部分
is
procedure pro_sel_all(curp out cursor) --curp为游标类型的输出参数
begin
open curp for --将student表中的信息存放到curp中去
select * from student;
end pro_sel_all;
end pack_sel_all;
/
这个我花了一阵子才弄明白,弄的头都大了,没办法,脑子笨,呵呵,不过现在已经知道了。
create procedure pro_sel_all
as
select * from student
由于在Oracle中没有一个类型去接受一个结果集,而在SQL Server中却是由数据库系统自动返回结果集,然后显示。故如果我们用类似上面的方法来创建,如下:
create or replace procedure pro_sel_all
as
begin
select * from student;
end procedure pro_sel_all;
则会报错:Warning: Procedure created with compilation errors.
那么在解决这个问题的时候有两个方法可以选择,第一种就是用游标来返回结果集合。
create or replace procedure pro_sel_all
is
c_sname student.sname%type;
c_sage student.sage%type;
c_ssex student.ssex%type;
begin
open cur_sel_all;
loop --循环取数,并将游标数据填充到返回纪录集合中
ёxit when cur_sel_all%NOTFOUND;
dbms_output.put_line(c_sno||' '||c_sname||' '||c_sage||' '||c_ssex);
end if;
end loop;
close cur_sel_all;
end;
/
exec pro_sel_all; --执行存储过程
我们也可以要用包(Package)来完成。在包的说明部分中声明游标和存储过程,在包体中给出存储过程。
则上面的存储过程,写为:
create or replace package pack_ sel_all ------创建包的说明部分
as
procedure pro_sel_all (curp out mycursor );
/
create or replace package body pack_sel_all ------创建包体部分
is
procedure pro_sel_all(curp out cursor) --curp为游标类型的输出参数
begin
select * from student;
end pack_sel_all;
/
这个我花了一阵子才弄明白,弄的头都大了,没办法,脑子笨,呵呵,不过现在已经知道了。
- 关于Oracle中select * from where 的存储过程
- 关于Oracle中select * from where 的存储过程
- mysql存储过程中使用select count(*) into 变量名 from +表+ where条件的用法
- Oracle select * from table 存储过程
- oracle查询语句中select from where group by having order by的解释与应用
- oracle查询语句中select from where group by having order by的解释与应用
- oracle查询语句中select from where group by having order by的解释与应用
- Oracle存储过程返回select * from table结果
- SQL中存储过程的参数怎样才做可以传给SELECT FROM 语句中做表名
- oracle 中 create table tb_content_bak as select * from tb_content where 1=2 long字段解决办法
- c# from where select
- 关于oracle存储过程中创建动态表的问题
- 关于在PB中动态调用ORACLE的存储过程
- [SQL-码农]Select * from [存储过程]
- oracle 存储过程中使用select 列 into 变量
- 查询语句中select from where group by having order by的执行顺序
- 查询语句中select from where group by having order by的执行顺序
- 查询语句中select from where group by having order by的执行顺序
- 使用正则表达式
- 在线笔试题目解答
- ANSI/ISO C++ Professional Programmer's Handbook 9
- c程序的存储空间布局
- 我的技术性blog开始了……
- 关于Oracle中select * from where 的存储过程
- Write operations are not allowed in read-only mode (FlushMode.NEVER) - turn your Session into FlushMode.AUTO or remove 'readOnly
- memmove实现
- Java字符集
- open session and Hibernate事务处理机制
- 数据挖掘基础一
- 需要使用单一实例合需要应用单例模式的区别
- www.getdeb.net,可以下载很多deb包
- 脱口228句