在SELECT中使用变量并像普通SELECT一样输出结果

时间:2019-11-08 12:19:17

标签: oracle variables select plsql

我有一个SELECT,它非常慢,我认为使用两个SELECT而不是子选择或联接时会很快。

基本上,我需要从一个表中选择一些数字,并将其用于另一个SELECT的where语句中。

目前我正在工作:

DECLARE
  v_skus VARCHAR2(255);
BEGIN
  SELECT LISTAGG(num,',') WITHIN GROUP (ORDER BY num) INTO v_skus FROM VIEWNAME WHERE parent IN ('1000');
  DBMS_OUTPUT.PUT_LINE('v_skus=' || v_skus);
END;

这将在变量中给我一个'1001,1002'。

我现在想在另一个SELECT之类的

中使用它
... WHERE number IN (v_skus)

如果我将第二个SELECT放在BEGIN块中,则会收到错误消息“此SELECT语句中预期有INTO子句”。

那么我是否必须为实际结果使用另一个变量,以及如何像普通的SELECT那样获得实际的表式结果呢?

我的方法不对吗?

1 个答案:

答案 0 :(得分:0)

为什么可以使用2个不同的选择,而又可以使用单个嵌套选择-

DECLARE
  v_skus VARCHAR2(255);
BEGIN
  SELECT YOUR_FIRST_QUERY
  INTO v_skus
  FROM YOUR_OTHER_TABLE
  WHERE WHERE number IN (SELECT num FROM VIEWNAME WHERE parent IN ('1000'));
  DBMS_OUTPUT.PUT_LINE('v_skus=' || v_skus);
END;