oracle存储过程问题,求救!!

lixianzhang0493 2009-05-25 12:09:20


本人刚学oracle的存储过程,下面有些地方不太明白,求助各位!


create or replace PROCEDURE proces
(
i_uid VARCHAR2,--当前操作人ID
is_null varchar2
-- Io_Cursor IN OUT pkg_public.cur_ref
)IS
t_MyEmployeeId VARCHAR2(20);
t_sql varchar(200):='';
begin
t_MyEmployeeId:= i_uid;

t_sql:='select * from pro_projects a where 1=1';

IF is_null IS NOT NULL THEN
t_sql := t_sql || ' and a.projects_id ='''||t_MyEmployeeId||'''';
END IF;
end;

我的操作是判断参数is_null如果等于空,就把后面的查询接上去,现在的问题是,我测试-F8执行的时候不出任何结果,我想让他查询出一张表的形式显示出来该怎么加输出流?求助各位!!
...全文
98 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
一方晴空 2009-05-31
  • 打赏
  • 举报
回复
EXECUTE proces ('uid','true');
如果IS_NULL字段为空,那你还真的需要游标了
wangsong145 2009-05-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lixianzhang0493 的回复:]


我想问下,这个SYS_REFCURSOR 游标是自己定义呢。还是系统定义的。什么情况下用?为什么现在用的就是“SYS_REFCURSOR”这种游标
[/Quote]
是自己定义的,如果想返回一个数据集则需要使用这个游标
lixianzhang0493 2009-05-29
  • 打赏
  • 举报
回复


我想问下,这个SYS_REFCURSOR 游标是自己定义呢。还是系统定义的。什么情况下用?为什么现在用的就是“SYS_REFCURSOR”这种游标
wangsong145 2009-05-29
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lixianzhang0493 的回复:]
引用 1 楼 wangsong145 的回复:
CREATE OR REPLACE PROCEDURE PROCES(I_UID VARCHAR2, --当前操作人ID
IS_NULL VARCHAR2,
MY_CUR OUT SYS_REFCURSOR) IS
T_MYEMPLOYEEID VARCHAR2(20);
T_SQL VARCHAR(200) := '';
BEGIN
T_MYEMPLOYEEID := I_UID;

T_SQL := 'select * from pro_projects a where 1=1';

IF IS_NU…
[/Quote]
SYS_REFCURSOR 是游标
lixianzhang0493 2009-05-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wangsong145 的回复:]
CREATE OR REPLACE PROCEDURE PROCES(I_UID VARCHAR2, --当前操作人ID
IS_NULL VARCHAR2,
MY_CUR OUT SYS_REFCURSOR) IS
T_MYEMPLOYEEID VARCHAR2(20);
T_SQL VARCHAR(200) := '';
BEGIN
T_MYEMPLOYEEID := I_UID;

T_SQL := 'select * from pro_projects a where 1=1';

IF IS_NULL IS NOT NULL THEN
T_SQL…
[/Quote]

MY_CUR OUT SYS_REFCURSOR 这里的“SYS_REFCURSOR ” 代表什么意思?
lee24 2009-05-25
  • 打赏
  • 举报
回复
dbms_output.put_line(T_SQL)
wangsong145 2009-05-25
  • 打赏
  • 举报
回复
CREATE OR REPLACE PROCEDURE PROCES(I_UID VARCHAR2, --当前操作人ID
IS_NULL VARCHAR2,
MY_CUR OUT SYS_REFCURSOR) IS
T_MYEMPLOYEEID VARCHAR2(20);
T_SQL VARCHAR(200) := '';
BEGIN
T_MYEMPLOYEEID := I_UID;

T_SQL := 'select * from pro_projects a where 1=1';

IF IS_NULL IS NOT NULL THEN
T_SQL := T_SQL || ' and a.projects_id =''' || T_MYEMPLOYEEID || '''';

OPEN my_cur FOR
t_sql;
END IF;
END;

17,378

社区成员

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

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