传入参数为 AA--存放一条SELECT语句,BB--起始位置,CC--结束位置 三个参数
要求返回一结果,实现查出表中第BB条到CC条的记录,请问此存储过程怎么写啊,
拜托各位,帮帮忙,急!!!
要求返回一结果,实现查出表中第BB条到CC条的记录,请问此存储过程怎么写啊,
拜托各位,帮帮忙,急!!!
解决方案 »
- ★★★★★【200分求解OCI的一些问题】★★★★
- 对包没有概念,什么时候应该用包
- oracle回滚段的等待回数,取得回数,等待回数等是什么意思?谢谢
- 头大了:oracle9i 任务导出,提交完毕后察看任务,总是显示失败?
- 将表从SQL Server2000导入到Oracle10G之后的怪现象???
- 谁知道有Oracle9i下载的网站吗?是3CD的????
- 一个关于索引的问题~! 急!
- 一句SQL如何实现?
- 朋友们有懂ACCESS的吗?有没有类似ORACLE的ROWNUM的东西? 请到ACCESS论坛取分,和这里的分数是通的。我的朋友请帮我up一下,谢谢了。
- 查找连续号中缺失的号码
- 超难问题.关于datalink的安全问题。在线!解决立即给分
- 高分请教
V_STR : VARCHAR2(1000);
BEGIN
V_STR := AA || ' AND (ROWMUN >=' || TO_CHAR(BB) || ' AND ROWNUM <= ' || TO_CHAR(CC) || ') ';
EXECUTE IMMEDIATE V_STR;
END QUERY;
关键是
EXECUTE IMMEDIATE 是执行一个字符串, 这个字符串中是一个查询语句, 你自己扩展一下
TYPE T_TOTAL_DATA IS TABLE OF VARCHAR2(1000) INDEX BY BINARY_INTEGER;
--在包中写如下函数
CREATE OR REPLACE FUNCTION QUERY(AA VARCHAR2(1000), BB NUMBER(10), CC NUMBER(10)) RETURN T_TOTAL_DATA
IS
V_STR : VARCHAR2(1000);
IT_DATA T_TOTAL_DATA;
a number(3):=1;
type cur_type is ref cursor; --定义默认游标类型
TYPE rec_type IS RECORD (
sqlstr varchar2(1000),
num_no NUMBER(3));
rec rec_type;
BEGIN
V_STR := AA || ' AND (ROWMUN >=' || TO_CHAR(BB) || ' AND ROWNUM <= ' || TO_CHAR(CC) || ') ';
-- EXECUTE IMMEDIATE V_STR;
FOR I IN (1.. (CC-BB))
LOOP
IT_DATA(I):='';
END LOOP;OPEN cur_Getval FOR V_STR ;
LOOP
Fetch cur_Getval into rec.sqlstr,rec.num_no;
exit when cur_Getval%notfound;
IT_DATA(a) :=rec.sqlstr;RETURN IT_DATA;
END ;未经测试,意在提供思路.
语句是查不出结果的,因为ROWNUM是一个伪列,当ROWNUM > 一个数时,如果这个数是大于等于1的数,此表达式返回FALSE,也就是如果BB为一个大于等于1的数,你得到的结果永远是空,你可以改造一下,得到你的结果