急:我的存储过程到底该怎么写啊?

[复制链接]
查看11 | 回复5 | 2005-11-27 01:02:39 | 显示全部楼层 |阅读模式
procedure SP_STATLASTFUND(

BDATE IN VARCHAR2,

EDATE IN VARCHAR2,

RVALUE OUT VARCHAR2,) IS
SQL1 VARCHAR2(2000);
BEGIN
SQL1:='SELECT ......省略N行..............';
....
RVALUE ???该怎么写呢?
end SP_STATLASTFUND;
由于得到的是1条数据,所以我想直接把这条数据赋给RVALUE,但是不知道该怎么写了,请达人们指教~
请注意:我的SQL1是个字符串形式的。
回复

使用道具 举报

千问 | 2005-11-27 01:02:39 | 显示全部楼层
难道一定要用cursor吗
回复

使用道具 举报

千问 | 2005-11-27 01:02:39 | 显示全部楼层
select qty into v_qty
from test
where id = :v_id;
回复

使用道具 举报

千问 | 2005-11-27 01:02:39 | 显示全部楼层
2楼的意思我明白,现在的问题是我的SQL1被声明为字符串了:
SQL1:='SELECT ......省略N行..............';

select qty into v_qty
from test
where id = :v_id;
这样的语法我没法执行
回复

使用道具 举报

千问 | 2005-11-27 01:02:39 | 显示全部楼层
最初由 对月影单 发布
[B]2楼的意思我明白,现在的问题是我的SQL1被声明为字符串了:
SQL1:='SELECT ......省略N行..............';

select qty into v_qty
from test
where id = :v_id;
这样的语法我没法执行 [/B]

哦,你现在只有用动态游标啦.
create or replace function sum_string(v_sql varchar2)
return varchar2
/*

作者:[email protected]

博客:http://blog.itpub.net/xzh2000
*/
as
/* 声明动态游标变量 */

type cur_alldata is ref cursor;
l_alldata cur_alldata;
/* 查询sql及其变量 */

v_row varchar2(99);
v_sum varchar2(3999);
begin
open l_alldata for v_sql;
loop

fetch l_alldata into v_row;

/* 没有数据却退出 */

exit when l_alldata%notfound;


v_sum := v_sum||','||v_row;

end loop;
v_sum := substr(v_sum,2);
close l_alldata;

return v_sum;
end;
回复

使用道具 举报

千问 | 2005-11-27 01:02:39 | 显示全部楼层
嗯,好的,谢谢 xzh2000
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行