oracle存储过程 游标和动态赋值问题
createorreplaceprocedurestatisticsTimeisCursorlistReportisselectpsr.reportdate,psr.id...
create or replace procedure statisticsTime is
Cursor listReport is
select psr.reportdate, psr.id
from T_PR_STATION_REPORT psr
where psr.status = '2'
group by psr.reportdate, psr.id
order by psr.reportdate;
begin
1、怎么定义一个游标变量,也就是我里面有个循环返回的值循环存储到游标变量里面 然后使用此游标进行循环操作? 这里定义游标都要Cursor name is select* from A
我这里只想要一个空变量在怎么定义呢, type product is ref cursor; 这样定义使用的时候不能使用,
2、上面的已经定义的游标listReport is 后面的sql语句 我可不可以预付一个值 后面再给他传参数 例如 select * from a where a.id=? 要实现这种应该怎么写 展开
Cursor listReport is
select psr.reportdate, psr.id
from T_PR_STATION_REPORT psr
where psr.status = '2'
group by psr.reportdate, psr.id
order by psr.reportdate;
begin
1、怎么定义一个游标变量,也就是我里面有个循环返回的值循环存储到游标变量里面 然后使用此游标进行循环操作? 这里定义游标都要Cursor name is select* from A
我这里只想要一个空变量在怎么定义呢, type product is ref cursor; 这样定义使用的时候不能使用,
2、上面的已经定义的游标listReport is 后面的sql语句 我可不可以预付一个值 后面再给他传参数 例如 select * from a where a.id=? 要实现这种应该怎么写 展开
2个回答
展开全部
创建:
create or replace procedure t_ts(ref_cur out sys_refcursor) AS
BEGIN
open ref_cur for SELECT leixing FROM diaobodan;
end t_ts;
调用:
declare
s_cur SYS_REFCURSOR;
v_leixing varchar2(100);
begin
t_ts(s_cur);
loop
fetch s_cur into vv_name;
exit when s_cur%notfound;
dbms_output.put_line(v_leixing);
end loop;
end;
是这个意思吗?
create or replace procedure t_ts(ref_cur out sys_refcursor) AS
BEGIN
open ref_cur for SELECT leixing FROM diaobodan;
end t_ts;
调用:
declare
s_cur SYS_REFCURSOR;
v_leixing varchar2(100);
begin
t_ts(s_cur);
loop
fetch s_cur into vv_name;
exit when s_cur%notfound;
dbms_output.put_line(v_leixing);
end loop;
end;
是这个意思吗?
追问
是的,是的,
还有一个问题,就是 我想在下面给上面游标查询语句赋值条件该怎么来操作,
cursor a is select * from a where a=?
begin
a.setString(0,'1');--类似这种操作 该怎么弄
end
追答
创建带参数的存储过程。例如传送数值参数p_num如下方式修改:
create or replace procedure t_ts(ref_cur out sys_refcursor,p_mun in number)
调用语句: t_ts(s_cur,i); 把 i 值传给p_num。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.既然你在循环的时候存储变量到游标,又循环游标操作,为什么你不在一个循环中,得到返回值然后对返回值进行操作呢?
2.select * from a where a.id=? 在oracle中用select * from a where a.id=&a的形式实现,你可以试试 会提示你输入变量
2.select * from a where a.id=? 在oracle中用select * from a where a.id=&a的形式实现,你可以试试 会提示你输入变量
追问
恩,这里就是不知道 循环中返回的值拿什么接受,只查到了游标可以
追答
按照你的想法你可以存到表里或者存到数组中
type t_varray is varray(10) of number;
v_varray t_varray;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询