У вас есть некоторые проблемы; скажем, у вас есть стол, как
create table someTable(userName varchar2(100))
и код типа:
declare
someVariable varchar2(100);
l_entry_found number;
begin
someVariable := 'someName';
--
SELECT COUNT(*)
INTO l_entry_found
FROM someTable
WHERE username = someVariable;
end;
Если вы хотите переключиться на динамический SQL, вам нужно
- удалить точку с запятой
- используйте переменные связывания для передачи вашего параметра
- переместите
INTO
за пределы динамической части
Ваш код может быть:
declare
someVariable varchar2(100);
l_entry_found number;
begin
someVariable := 'someName';
--
execute immediate
'SELECT COUNT(*)
FROM someTable
WHERE username = :bindVar'
into l_entry_found
using someVariable;
end;
Здесь я предполагаю, что у вас есть веская причина для перехода на динамический SQL, например, имя вашей таблицы может меняться в зависимости от какого-либо параметра; если нет, простой SQL достаточно хорош для вашей задачи.