pl/sql存储过程

迷_雾 2017-10-09 02:14:33
sql存储过程 第一次用存储过程,下面这语句会出错,不知道怎么修改
create or replace procedure rank_emp
is
select * from office_vw_rank_total
go
exec rank_emp
...全文
192 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
junes06 2017-10-09
  • 打赏
  • 举报
回复
oracle 中 begin end 里面不能直接写select * from 表, 会报错的。 如果你想返回一个表,可以定义一个游标,把游标返回出去,就可以了。
碧水幽幽泉 2017-10-09
  • 打赏
  • 举报
回复
你这个需要用到游标,给你两个例子供你参考。

--1.使用游标和loop循环来显示所有部门的名称
--游标声明
declare
--select语句
cursor csr_dept is select dname from depth;
--指定行指针,这句话应该是指定和csr_dept行类型相同的变量
row_dept csr_dept%rowtype;
begin
--for循环
for row_dept in csr_dept loop
dbms_output.put_line('部门名称:'||row_dept.dname);
end loop;
end;
/

--2.使用游标和while循环来显示所有部门的的地理位置(用%found属性)
declare
--游标声明
cursor csr_testwhile is select loc from depth;
--指定行指针
row_loc csr_testwhile%rowtype;
begin
--打开游标
open csr_testwhile;
--给第一行填充数据
fetch csr_testwhile into row_loc;
--测试是否有数据,并执行循环
while csr_testwhile%found loop
dbms_output.put_line('部门地点:'||row_loc.loc);
--给下一行填充数据
fetch csr_testwhile into row_loc;
end loop;
close csr_testwhile;
end;
/

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧