关于游标定义的问题?求助:(

Strawberry79 2003-02-17 11:22:13
游标定义如下:
SELECT xxx,yyy,zzz
FROM tablename
WHERE YY <= p_EndDate AND YY>= p_StartDate AND ADDVNM = p_Region;

但有一个问题,如果我的select的列名有一个不确定,但在下面的我又要用到这个字段,该怎么办?如zzz,我不能确定它是哪个字段,要通过参数来确定,能实现吗?:(
...全文
45 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
beckhambobo 2003-02-17
  • 打赏
  • 举报
回复
create or replace procedure name_pro(p_col varchar2,....)
as
type t_sor is ref cursor;
v_sor t_sor;
strsql varchar2(50);
begin
strsql:='SELECT xxx,yyy,'||p_col||'
FROM tablename
WHERE YY <= '||p_EndDate||' AND YY>='|| p_StartDate||' AND ADDVNM = '||p_Region;
open v_sor for strsql;
fetch v_sor into ....;
loop
exit when v_sor%notfound;
....
end loop;
....
close v_sor;
end;
/
Strawberry79 2003-02-17
  • 打赏
  • 举报
回复
DBMS_SQL怎么用在存储过程里?

在存储过程里使用动态游标行吗?因为zzz是传进来的一个参数,这样写
if zzz := 'a' then
OPEN v_ADDV FOR --打开游标变量
select xxx,yyy,zzz1
end if;
if zzz := 'b' then
OPEN v_ADDV FOR --打开游标变量
select xxx,yyy,zzz2
end if;
这样OK?
hepp 2003-02-17
  • 打赏
  • 举报
回复
使用动态sql,可以动态生成string,然后再执行这条语句。下面是一个例子:
TYPE TCursor IS REF CURSOR;


cc TCursor;
if condition 1
strSql := 'SELECT xxx,yyy,zzz1';
else
strSql := 'SELECT xxx,yyy,zzz1';
end if;
open cc for strSql;
black_snail 2003-02-17
  • 打赏
  • 举报
回复
in StoreProcedue , You can use DBMS_SQL to define the dynamic sql . It should meet your requirement ,
All you can just code your script :

if condition 1
SELECT xxx,yyy,zzz
else
SELECT xxx,yyy,zzz1
Strawberry79 2003-02-17
  • 打赏
  • 举报
回复
原来在定义游标的时候SELECT里面能用变量呀?如果这样的话问题就简单多了!
多谢上面的仁兄!:)

17,377

社区成员

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

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