Я запутался в ошибке при выполнении хранимой процедуры. Ошибка «недопустимый оператор отношения»:Почему я получаю ошибку во время выполнения при выполнении немедленной команды
...
DECLARE
varResult integer;
varFilterString varchar2(1000);
varSampleCode nvarchar2(80);
begin
--debug values
varFilterString := 'auditflag=0' ;
varSampleCode := 's00083';
--this command gives the runtime error:
execute immediate 'select count(*) from samples where samplecode = :samplecode and auditflag = 0 and :filter'
into varResult
using varSampleCode, varFilterString ;
...
PL/SQL не то, что я делаю очень часто, и я озадачен этим. Что не так с этой линией?
ТИА
Хорошо, теперь понятно и спасибо - но я все еще получаю ошибку времени выполнения (ор-0900 недействительное заявление SQL), когда линия выполняет: выполнить немедленный «SELECT COUNT (*) из образцов, где samplecode =: 1 и auditflag = 0 и '|| varFilterString в varResult с использованием varSampleCode; –
Что произойдет, если вы выполните запрос вручную: 'select count (*) из образцов, где samplecode = 's00083' и auditflag = 0 и auditflag = 0'? Я не вижу явной ошибки, но в настоящий момент у меня нет Oracle. – DoctorMick
Все в порядке. Фактическое значение varFilter, когда я получаю ошибку, является «submittercode = 'S», которое передается вызывающим приложением и вполне законно. Может ли это быть чем-то связанным с внедренными апострофами? –