存储select查询的数据,返回指定列的多个返回值

时间:2012-12-01 07:58:52

标签: oracle oracle10g

我有一个返回多个值的select查询。我必须将它存储在一个变量中并在游标创建的where子句中使用它。我的变量的类型应该是什么?

2 个答案:

答案 0 :(得分:0)

首先,您应该尽量不存储它,因为将两个查询合并为一个将更容易,更有效。

除此之外,该类型应与您正在阅读的列相同。

答案 1 :(得分:0)

如前所述,您应该将两个查询(CURSOR的查询和作为其WHERE子句的查询)组合到一个查询中。但是,如果必须在将数据传递给CURSOR的WHERE子句之前将数据存储到变量中,则可以按如下方式定义变量:

假设你的源表是TAB_SOURCE,你想从中选择列COL1,COL2和COL3。变量定义是:

V_COL1 TAB_SOURCE.COL1%TYPE;
V_COL2 TAB_SOURCE.COL2%TYPE;
V_COL3 TAB_SOURCE.COL3%TYPE;

这样,您无需在定义变量时显式写入数据类型。 DBMS自动选择源列的数据类型并将其分配给各自的变量。