Oracle使用游标放回结果集出现怪异问题

回头是岸 2012-04-23 10:31:23
表结构:
id name remark
---------------------
a ha 标记
a wo null
a me null
d co null
--------------------
存储过程:
create or replace procedure Get
(
Ids IN VARCHAR2,
Out_Cursor OUT sys_refcursor
)
as
begin
open Out_Cursor FOR
select * from table where id=ids;
end;
------------------------------------
测试结果:ids-〉a
id name remark
---------------------
a ha 标记
a wo null
a me null
d co null
-------------------
为什么会出现这样的结果呢?明明参数传人的是a却把id为d的也查出来了,请问这是怎么回事?

...全文
877 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
我心飞翔 2012-04-23
  • 打赏
  • 举报
回复
没有发生你说明的情况,一切正常。
我心飞翔 2012-04-23
  • 打赏
  • 举报
回复
实测数据:

CREATE TABLE T192
(
ID VARCHAR2(20),
NAME VARCHAR2(20),
remark VARCHAR2(20)
);

INSERT INTO T192 VALUES('a', 'ha', '标记');
INSERT INTO T192 VALUES('a', 'wo', NULL);
INSERT INTO T192 VALUES('a', 'me', NULL);
INSERT INTO T192 VALUES('d', 'co', NULL);
COMMIT;


存储过程:

create or replace procedure Get
(
Ids IN VARCHAR2,
Out_Cursor OUT sys_refcursor
)
as
begin
open Out_Cursor FOR select * from T192 where id = ids;
end;


测试代码:

DECLARE
vCur SYS_REFCURSOR;
r T192%ROWTYPE;
begin
-- Call the procedure
get(ids => :ids, Out_Cursor => vCur);
LOOP
FETCH vCur INTO r;
EXIT WHEN vCur%NOTFOUND;
dbms_output.put_line(r.id || ', ' || r.name || ', ' || r.remark);
END LOOP;
dbms_output.put_line('');
end;


测试结果:

17,380

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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