簡體   English   中英

如何使用一個查詢的結果,比如另一個查詢的參數?? 甲骨文

[英]How to use the result of a query like parameters of another one ?? ORACLE

我有一個返回這個的查詢

SELECT COLNAME FROM TABLE_1 WHERE CATALOG_ID = 40;

    COLNAME
    ----------------
    CONVERTED_VALUE
    CONVERTED_VALUE_01
    CONVERTED_VALUE_02
    CONVERTED_VALUE_03
    VALUE_DESCRIPTION

我需要將此結果轉換為如下查詢:

SELECT CONVERTED_VALUE, CONVERTED_VALUE_01, CONVERTED_VALUE_02, 
CONVERTED_VALUE_03 , VALUE_DESCRIPTION 
FROM TABLE2 WHERE CATALOG_ID = 40;

例如,可以在我不知道的單個查詢中執行此操作

SELECT( SELECT COLNAME FROM TABLE_1 WHERE CATALOG_ID = 40 ) 
FROM TABLE_2 WHERE CATALOG_ID = 40;

顯然這行不通,但這是想法:)

我真的不知道如何實現這一目標。 大家有什么建議嗎? 我不是使用數據庫的專家:(

我正在使用 Oracle 10。

這個想法基本上是將第一個查詢的結果轉換為第二個查詢的參數。

我認為這就是你要找的,只要我對你的問題的理解是正確的:

SELECT
  t.CONVERTED_VALUE,
  t.CONVERTED_VALUE_01,
  t.CONVERTED_VALUE_02, 
  t.CONVERTED_VALUE_03,
  t.VALUE_DESCRIPTION
FROM
  (SELECT COLNAME FROM TABLE_1 WHERE CATALOG_ID = 40) t,
  TABLE_2
WHERE TABLE_2.CATALOG_ID = 40;

如果我不明白你在問什么,請告訴我。

這就是我想到的。 但是從匿名塊中觸發 select 語句看起來不太好。

DECLARE
    V_COL VARCHAR2(100):='';
    s_ql VARCHAR2(200):='';
BEGIN
    SELECT LISTAGG(COLNAME,',') WITHIN GROUP(ORDER BY COLNAME) AS COL INTO V_COL FROM TABLE_1 WHERE CATALOG_ID = 40 group by CATALOG_ID;
    s_ql:='SELECT '||V_COL||' FROM TABLE2 WHERE CATALOG_ID = 40';
    EXECUTE IMMEDIATE (s_ql);
END

您可以使用一些變量或集合來捕獲結果並使用DBMS_OUTPUT顯示它。

select語句的返回格式與我們需要提供的列名格式不匹配,所以我猜這是不可能的:(

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM