здесь все, что входит в две одинарные кавычки ('), будет считаться строкой. но что, если вам нужна строка с одинарными кавычками внутри себя.
пример,
если вам нужна переменная word-sample для переменной, ее можно просто объявить как l_var: = 'sample'.
но если строка нужна с одинарными кавычками вроде - «Это образец» ??
в этом случае, если мы позволим, как есть, механизм sql будет читать от первой одинарной кавычки до следующей одинарной кавычки, аналогично ...
в этом случае мы будем использовать одинарные кавычки несколько раз, как требуется.
это может быть указано ниже пример:
declare
single_quote_string varchar2(20):= 'sample';
multi_quote_string varchar2(20):= 'It''s sample';
multi_quote2_string varchar2(20):= '''It''s sample''';
begin
dbms_output.put_line('single_quote_string:'||single_quote_string);
dbms_output.put_line('multi_quote_string:'||multi_quote_string);
dbms_output.put_line('multi_quote2_string:'||multi_quote2_string);
end;
--output
single_quote_string:sample
multi_quote_string:It's sample
multi_quote2_string:'It's sample'
в вашем вопросе вы спрашивали об использовании: return 'UPPER (USER_NAME) =' '' || пользователь || '' ''; в немедленном исполнении.
execute немедленный - используется для выполнения строки.
в вашем случае это условие where имени пользователя.
при нормальном sql у нас будет
upper(username) = 'SAMPLE';
но здесь это условие должно быть передано в виде строки для выполнения немедленной команды, то есть обычные кавычки, которые мы обычно используем, должны быть переданы в виде строки, и, следовательно, мы используем несколько раз.
если все еще не ясно, вы можете попытаться отобразить оператор немедленного выполнения, который вы используете в своем коде, который выведет команду sql, которую вы пытаетесь запустить, в команду немедленного выполнения.