我在python中使用cx oracle模块。我有两个看起来像这样的表:
第一桌:
| parameter | context |
+--------------+------------+
| a | column_1 |
| b | column_2 |
第二
|id| column_1 | column_2 |
+--+----------------+-------------+
| 1| bla1 | (NULL) |
| 2| bla2 | (NULL) |
| 3| (NULL) | (nla1) |
| 4| (NULL) | (nla2) |
输入是:
a, nla1
如果我想从第二个表中返回id = 3
,如何创建查询?
表结构已经是这样了。我无法改变它。
答案 0 :(得分:2)
" column_name是变量的,如果参数a可以是column1但是如果参数b"
可以是column2
使用常规SQL无法编写这样的语句:您需要动态,这意味着PL / SQL。 Find out more
简单的实现是这样的:
create or replace function get_id is
(p_param_col in varchar2
, p_param_val in varchar2)
return number
is
l_col_name varchar2(30);
return_value number;
begin
select context into l_col_name
from table_1
where parameter = p_param_col;
execute immediate 'select id from table_2 where '
|| l_col_name || ' = :1'
into return_value
using p_param_val;
return return_value;
end;
答案 1 :(得分:0)
使用动态SQL在运行时设计查询,然后使用EXECUTE IMMEDIATE子句。