Oracle中怎么在存储过程中select结果啊

比如我的一个存储过程,我想完成一系列的update,insert操作后,把最终的结果select出来。
但是提示 在此 SELECT 语句中缺少 INTO 子句。
我查了一下,说在begin end模块中不能添加纯粹的select语句,但是这样在sqlserver里面是可以的。
Oracle里面要怎么做啊
最新回答
小糊涂

2024-11-27 01:06:42

也是习惯了SQL Server的
存储过程
中直接可以使用select语句输出结果集,但这个在Oracle中就行不通了。
如果你仅仅是想看到存储过程中语句所影响的记录内容,那么可以考虑使用
游标
,然后循环游标用dbms_output将内容输出,从而可以在dbms的输出中看到;
如果是要使用在其它地方,那么要给此存储过程设置一个ref cursor输出参数,并且在存储过程中设置好此游标。
追问
那如果我要做一个最简单的就是select的存储过程应该怎么办呢,比如查询大于指定ID的数据列表。
create or replace
procedure test
(
id1 in int
)
is
begin
select * from t_pointinfo where t_pointinfo.id<id1;
end;
追答

在存储过程体内,用for循环获取数据,然后dbms_output输出到dbms的输出中:

for rec in (select * from t_pointinfo where t_pointinfo.id < id1) loop
  dbms_output.put_line(rec.field1 || rec.field2 ...); 
end loop;
孤独的王后

2024-11-27 04:00:17

Oracle存储过程中不能这样做,要不你加一个out参数吧?