Sql 将select存储到变量中以备将来在过程中使用

Sql 将select存储到变量中以备将来在过程中使用,sql,oracle,Sql,Oracle,我正在编写一个程序,在这个程序中,我必须使用“where field IN(SET)”条件进行更新。我试图通过以下查询从表中检索此“集”: SELECT WM_CONCAT(fieldX) FROM TableX WHERE .... ; 我想将这个select保存到一个变量中,并在“where field IN(SET)”条件下使用它。比如: UPDATE TABLEY SET ... WHERE fieldX IN (Variable); 现在,当我尝试使用where条件(如

我正在编写一个程序,在这个程序中,我必须使用“where field IN(SET)”条件进行更新。我试图通过以下查询从表中检索此“集”:

   SELECT WM_CONCAT(fieldX) FROM TableX WHERE .... ;
我想将这个select保存到一个变量中,并在“where field IN(SET)”条件下使用它。比如:

   UPDATE TABLEY SET ... WHERE fieldX IN (Variable);
现在,当我尝试使用where条件(如我想要的更新条件)进行选择时,我会遇到此错误:

  ORA-00932: inconsistent datatypes: expected - got CLOB
  00932. 00000 -  "inconsistent datatypes: expected %s got %s"
提前使用Thx。

试试看

UPDATE TABLEY y
   SET ... 
 WHERE y.fieldX IN (
          SELECT x.fieldX FROM TableX x WHERE .... 
       )
     ;
尝试使用xmltable

UPDATE TABLEY y
SET ... 
WHERE y.fieldX IN(SELECT (COLUMN_VALUE).getNumberVal() 
                  FROM xmltable(Variable));

我希望避免每次更新都进行查询。这就是为什么我想将select存储在一个变量中。谢谢,我不喜欢每次更新都选择相同的数据。是否有任何方法可以将此select存储到变量中供以后使用,以防止重复同一查询?谢谢。请注意,数据库表实际上是一种保存数据供以后使用的变量。因此,您可以利用临时表进行会话内存储。另一种方法是plsql colleciton数据结构,其中大多数都映射到表。尽管如此,您还是最好重复查询,除非您可以确定基础数据在连续调用之间不会发生更改。