簡體   English   中英

從表中選擇特定列的數據,其中查詢返回列名稱

[英]select data of specific column from table where column names are returned by query

我寫了2個單獨的查詢

1)


SELECT COLUMN_NAME
  FROM ALL_TAB_COLUMNS
 WHERE TABLE_NAME =
       (SELECT DISTINCT UT.TABLE_NAME
          FROM USER_TABLES UT
         WHERE UT.TABLE_NAME = 'MY_TABLE')
   AND COLUMN_NAME NOT IN ('AVOID_COLUMN')

2)


    SELECT *
      FROM MY_TABLE MT
     WHERE MT.COL1 = '1'
   

第一個查詢返回除我想要避免的列之外的所有列的名稱。 第二個返回表中所有列的數據。 有沒有辦法合並這些查詢,以便從第一個查詢返回的第二個查詢中只選擇那些列的數據?

提前致謝

你必須為此使用動態SQL(順便說一句,我擺脫了USER_TABLES查詢的子選擇 - 這是不必要的):

var  cur refcursor
/
declare
  v_stmt varchar2(4000);
begin
  v_stmt := 'SELECT ';  
  for cur in (
    SELECT COLUMN_NAME
    FROM ALL_TAB_COLUMNS
    WHERE TABLE_NAME =
       'MY_TABLE'
    AND COLUMN_NAME NOT IN ('AVOID_COLUMN')
  ) 
  loop
    v_stmt := v_stmt || cur.column_name || ',';
  end loop;
  -- get rid of trailing ','
  v_stmt := regexp_replace(v_stmt, ',$', '');

  v_stmt := v_stmt || ' from my_table MT WHERE MT.COL1 = ''1''';
  dbms_output.put_line(v_stmt);
  open :cur for v_stmt;
end; 

暫無
暫無

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

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