简体   繁体   English

如何使用一个查询的结果,比如另一个查询的参数?? 甲骨文

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

I have a query that returns this我有一个返回这个的查询

SELECT COLNAME FROM TABLE_1 WHERE CATALOG_ID = 40;

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

I need to convert this result into a query like the next:我需要将此结果转换为如下查询:

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

Is posible to do this in a single query I don't know for example例如,可以在我不知道的单个查询中执行此操作

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

Obviously that doesn't work but is the idea :)显然这行不通,但这是想法:)

I really don't know how to achieve this.我真的不知道如何实现这一目标。 Any suggestion guys?大家有什么建议吗? I'm not an expert at using databases :(我不是使用数据库的专家:(

I'm using Oracle 10.我正在使用 Oracle 10。

The idea is basically convert the result of the first query into the parameters of the second one.这个想法基本上是将第一个查询的结果转换为第二个查询的参数。

I think this is what you're looking for, as long as my understanding of your question is correct:我认为这就是你要找的,只要我对你的问题的理解是正确的:

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;

If i'm not understanding what you're asking let me know.如果我不明白你在问什么,请告诉我。

This is what came to my mind.这就是我想到的。 But firing select statement from anonymous block would not look nice.但是从匿名块中触发 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

You can use some variable or collection to capture result and display it using DBMS_OUTPUT .您可以使用一些变量或集合来捕获结果并使用DBMS_OUTPUT显示它。

select语句的返回格式与我们需要提供的列名格式不匹配,所以我猜这是不可能的:(

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM