[英]Oracle: dynamic SQL statement based on a mapping table
采取以下語句以便在此頁面中創建上下文:
BEGIN TRANSACTION;
CREATE TABLE TABLEA (COLUMN_A VARCHAR2(30));
CREATE TABLE TABLEB (COLUMN_B VARCHAR2(30));
CREATE TABLE MAPPING_TABLE (TABLEA_COL VARCHAR2(30), TABLEB_COL VARCHAR2(30));
INSERT INTO MAPPING_TABLE (TABLEA_COL, TABLEB_COL) VALUES ('COLUMN_A', 'COLUMN_B');
COMMIT;
我想打從選擇TABLEB
使用在設置好的映射值MAPPING_TABLE
。
換句話說,知道TABLEA
列的TABLEA
(例如'COLUMN_A')后,我想直接在TABLEB
進行SELECT
。
就像是:
SELECT /*a statement to recover the COLUMN_B based on the 'COLUMN_A' value*/
FROM TABLEB
可以在SQL語句中執行操作,還是我被迫使用PL / SQL上下文(帶有過程等)?
嘗試這個,
declare
v_col varchar(30);
v_val varchar(30);
sql_stmt varchar(255);
begin
select tableb_col into v_col
from mapping_table
where tablea_col = 'COLUMN_A';
sql_stmt := 'select '||v_col||' from tableb';
dbms_output.put_line ( sql_stmt ) ;
execute immediate sql_stmt into l_val;
dbms_output.put_line ( v_val) ;
end;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.