我有一个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
那样获得实际的表式结果呢?
我的方法不对吗?
答案 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;