CREATE OR REPLACE PROCEDURE test1
(
cv_1 IN OUT SYS_REFCURSOR,
cv_2 IN OUT SYS_REFCURSOR
)
AS
v_database NVARCHAR2(128);
BEGIN
open cv_1 for
SELECT *
FROM ( SELECT 字段1,字段2 FROM 表1 )
WHERE ROWNUM <= 1; IF ( 没有记录 ) THEN --请问这个如果处理 SELECT *
INTO v_database from (select 字段1 from 表2) IF ( 存在记录 ) THEN --请问这个如果处理
open cv_2 for SELECT v_database from dual;
else
操行别的操作
END IF;
END IF;END;-------------------
最终得到dataset
(
cv_1 IN OUT SYS_REFCURSOR,
cv_2 IN OUT SYS_REFCURSOR
)
AS
v_database NVARCHAR2(128);
BEGIN
open cv_1 for
SELECT *
FROM ( SELECT 字段1,字段2 FROM 表1 )
WHERE ROWNUM <= 1; IF ( 没有记录 ) THEN --请问这个如果处理 SELECT *
INTO v_database from (select 字段1 from 表2) IF ( 存在记录 ) THEN --请问这个如果处理
open cv_2 for SELECT v_database from dual;
else
操行别的操作
END IF;
END IF;END;-------------------
最终得到dataset
FROM ( SELECT 字段1,字段2 FROM 表1 )
WHERE ROWNUM <= 1;
if v_flag=0 then --没有记录
if v_flag>=1 then --有记录
FROM ( SELECT 字段1,字段2 FROM 表1 )
WHERE ROWNUM <= 1;
if v_flag=0 then --没有记录
if v_flag>=1 then --有记录
那你加一段这样的语句
但是相比之下 多一次查询 和打开一个游标 个人觉得 还是多一次查询好
毕竟游标也算是资源了
参考一下:
http://topic.csdn.net/u/20110113/10/a25ab493-2793-4ad3-a1f0-ad41e11ec314.html?75821
所以cv_1%found代表有记录,cv_1%notfound代表没有记录,这应该很常用的变量的吧
if cv_1%notfound then
...
else
...
end if
CREATE OR REPLACE PROCEDURE test1
(
cv_1 IN OUT SYS_REFCURSOR,
cv_2 IN OUT SYS_REFCURSOR
)
AS
v_database NVARCHAR2(128);
BEGIN
open cv_1 for
SELECT *
FROM ( SELECT 字段1,字段2 FROM 表1 )
WHERE ROWNUM <= 1; BEGIN
SELECT COUNT(*) INTO CNT FROM 表1 WHERE ROWNUM <= 1; IF CNT = 0 THEN --no data SELECT *
INTO v_database from (select 字段1 from 表2) IF CNT > 0 THEN --have data
open cv_2 for SELECT v_database from dual;
else
操行别的操作
END IF;
END IF;END;