2014-01-24 39 views
1

我是这个组的新手。我试图想到带有条件选择语句的游标。 一些如何这样的伪代码 -带有条件Select语句的Oracle游标

​​

其实,我碰到一个地方需要与同一DDL两个不同的表工作的场景。 基于某些用户输入,需要从表中获取数据并在过程中进一步操作。正如我所说的这两个表是相同的DDL 所以不想创建两个不同的光标。这种相同业务逻辑的原因将应用于两个表数据。它只是决定哪个表需要获取数据的用户输入。一些人可以将此视为最新的数据和历史数据以及DB的设计方式。

希望我清楚我的情况。

谢谢, Arfeen。

+1

那么你的问题是什么? –

+0

使用动态SQL。请参阅http://docs.oracle.com/cd/E11882_01/appdev.112/e25519/dynamic.htm#LNPLS011 – Rachcha

+0

使用ref游标可以解决您的问题,根据用户输入可以打开该游标所需的表。 – San

回答

1

游标可以声明为如下所述的联合。根据变量condition的内容,游标将基于Test1或Test2。

SELECT * FROM Test1 WHERE condition = 't1' 
UNION ALL 
SELECT * FROM Test2 WHERE condition = 't2' 
0

您试图实现的目标看起来好像可以通过更好的表或视图设计或使用BULK COLLECT来实现。 如果可以的话 - 始终考虑通过代码优先考虑数据库设计。

BEGIN 

if condition == 't11' then 
SELECT XXXXXX 
BULK COLLECT INTO bulk_collect_ids 
FROM your_table1; 
else 
SELECT XXXXXX 
BULK COLLECT INTO bulk_collect_ids 
FROM your_table2; 
end if; 

FOR indx IN 1 .. bulk_collect_ids.COUNT 
LOOP 
. 
//Doing the actual task on bulk_collect_ids data. 
. 
END LOOP; 

END;