【发布时间】:2014-11-27 11:51:52
【问题描述】:
我有一个表属性配置以下列:
table_name column_name key
假设是 2 行以下
帐号帐号电话帐号
客户 customernumber customerid
Key 只能是 accountnum 或 customerid。
我必须编写可以接受 (i_accountnum,i_customerid) 的代码,并且;
使用 where 条件中的键从 table_name 中提到的表中 column_name 中提到的列中获取相应的值。
例如:从 accountnum = i_accountnum 的帐户中选择 accountphone 从 customerid = i_customerid 的客户中选择 customernumber
完整的查询应该是动态形成的,查询中是否传递i_accountnum或i_customerid也需要动态决定。 if key - accountnum, i_accountnum 将传递给 where 条件。
到目前为止,我一直在尝试这些线路,这不起作用,我知道这是错误的。
declare
v_accountnum varchar2(20);
v_customerid varchar2(20);
v_attribute_value varchar2(20);
v_stmt varchar2(255);
begin
Account_Num := 'TestCustomer'; -- input to the function
v_customer_ref := 'TestAccount'; -- input to the function
for i in (Select * from attribute_config) loop
v_stmt := 'select ' || i.column_name || ' from ' || i.table_name ||' where ' || i.key|| ' = v_' || i.key;
execute immediate v_Stmt into v_attribute_value;
end loop;
end;
【问题讨论】:
标签: oracle dynamic-sql execute-immediate