У меня есть таблица attribute_config с ниже столбцами:Динамически назначая переменные Oracle SQL
table_name column_name ключ
Допустим, есть имеет менее 2 строк
счет accountphone AccountNum
CUSTOMERNUMBER клиента CustomerID
Ключ может быть только accountnum или customerid.
Мне нужно написать код, который примет (i_accountnum, i_customerid) и;
извлекать соответствующие значения из столбцов, указанных в имени столбца в таблицах, указанных в имени_таблицы, с использованием ключа, в котором указано условие.
Для бывших: выберите accountphone со счета, где AccountNum = i_accountnum выберите CustomerNumber от клиента, где CustomerID = i_customerid
полный запрос должен быть сформирован динамически, передавать ли i_accountnum или i_customerid в запросе также должно быть принято решение динамически. если key - accountnum, i_accountnum будет передан туда, где условие.
Я пробовал эти строки до сих пор, это не работает, я знаю, что это неправильно.
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;
То, что я пытаюсь достичь, - это динамически подготовить ключ для условия. – user2503883
В будущем может быть другой ключ, например productid, тогда этот ключ будет настроен в таблице и где условие должно выполняться «где i_productid =». О функции, принимающей 2 параметра, хотя она принимает 2 параметра, для запроса таблиц, всегда будет использоваться один параметр, и я хочу динамически решить (используя i.key), какой параметр использовать. i_accountnum или i_customerid на данный момент, может быть i_productid в будущем. Не аргумент case, как мы можем определить параметр с помощью самой i_key и передать его динамическому sql? – user2503883
Измените свой подход. Выполните функцию, которая получит «имя таблицы» и «значение ключа». Сопоставьте соответствующее имя столбца и извлечение параметра из таблицы сопоставления с помощью параметра «имя таблицы» и верните это значение. Вызовите эту функцию 2 раза, 3 раза, сколько нужно. – mikron