Oracle编程问题(4)
如果使用类似:
N_CID := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(N_CID, v_sqlcode, DBMS_SQL.V7);
DBMS_SQL.CLOSE_CURSOR(N_CID);
这样的方法来执行动态sql语句,那如何得到结果呢?
比如,我想知道select count(*) from tname的结果,
但使用 select count(*) into v_sum from tname这种写法似乎不太对.
有没有好的方法呢?
(我的目的,在SQL server可以这样来描述: if exists(select * from tname where col=v_col) ...)
问题点数:90、回复次数:4Top
1 楼alldog(芸芸众生)回复于 2002-02-04 12:17:51 得分 25
oracle: 可以这样
select * from tname where col=v_col) ...
if SQL%RowCount>0 then ....Top
2 楼easyfree(easyfree)回复于 2002-02-04 13:04:23 得分 25
楼上的, 这样在plsql中不行吧
1. select count(*) into v_sum from tname where rownum=1;
if v_sum>0 then ....
2. select 1 into v_sum from tname where rownum=1;
exception
when no_data_found then ...
如果使用DBMS_SQL, 它提供了相应的返回值的过程和函数, 你可以查一下文档Top
3 楼xzou(亡狼补齿)回复于 2002-02-04 13:22:55 得分 20
"但使用 select count(*) into v_sum from tname这种写法似乎不太对."
有什么不对?很好呀。
难道你的tname只是一个传入参数?Top
4 楼flowerofwind(现实很残酷)回复于 2002-02-04 13:29:51 得分 20
select count(*) into v_sum from tname这样写可以,但是如果用来判断表是否非空,就比较慢easyfree(easyfree)的方法不错Top




