Привет У меня есть следующая процедура:Oracle Динамические ВЕЬЕТЕ с DECODE Функция
create or replace procedure
SP_DELETE_FROM_TABLE(pTableName in VARCHAR2, pFieldName in VARCHAR2,
pFieldValue in VARCHAR2,pFieldType in VARCHAR2) is
querystring VARCHAR2(500);
begin
queryString := 'DELETE FROM ' ||pTableName||
' WHERE '||pFieldName ||' = DECODE(:pFieldType,integer,:pFieldValue)' ;
EXECUTE IMMEDIATE queryString USING pFieldType,pFieldValue;
end SP_DELETE_FROM_TABLE;
все мои параметры имеют тип VARCHAR2, что я пытаюсь сделать, это: Когда я вызываю процедуру со следующими значениями ('users_table', 'users_id', '11', 'целое')
так, используя DECODE Я хотел бы проверить, если pFieldValue имеет тип pFieldTypeand если да вернуться pFieldValue
так что если pFieldValue это: 11 и pfieldType: integer, он должен удалить users_id 11, если fieldType - строка ничего не делать ..
Я пришел с этим-> queryString: = 'УДАЛИТЬ ИЗ' || pTableName || 'WHERE' || pFieldName || '= DECODE (: pFieldType, ' 'n' ', to_number (: pFieldV1), ' 'c' ', to_char (: pFieldV2) )'; Но когда я добавляю to_date, это не работает. Есть ли какое-либо исправление для этого? – Licentia
отсутствует 'then' после' elsif' – are