从表中提取字符串以在查询中使用

问题描述 投票:0回答:1

我刚开始使用PL / SQL。我们将条件语句存储为一个表中的字符串(下面的表1),并希望根据另一个表中的公共变量(下面的表2)选择它们,如下所示:

表格1

ID  Statement
1   Case when col_1 = a or (col_1 = x and col_2 = m) then b else c end as Col_3
2   Case when col_1 = p and col_2 = n then q else r end as Col_3

表2

Case_ID   Col_1   Col_2
1         x       y
1         a       m
2         p       n 

决赛桌应该是这样的:

Col_1  Col_2  Col_3
x      y      c
a      m      b
p      n      q
oracle plsql dynamic-sql
1个回答
0
投票

您可能想要使用动态SQL:

Begin
  For v_rec In (SELECT t2.Col_1,
                       t2.Col_2,
                       t1.statement
                  FROM TABLE2 t2
                 INNER JOIN TABLE1 t1
                    ON t2.Case_ID = t1.ID)
  Loop
    Execute Immediate 'INSERT INTO FINAL_TABLE(Col_1, Col_2, Col_3) ' ||
                      'SELECT Col1, Col2, ' || v_rec.statement ||
                      ' FROM ( SELECT :Col1 AS Col1, :Col2 AS Col2 FROM DUAL)'
                Using v_rec.Col_1, v_rec.Col_2;
  End Loop;
End;
© www.soinside.com 2019 - 2024. All rights reserved.