Я изо всех сил пытаюсь создать динамический sql-параметризованный запрос. Она включает в себя использование 'IS NULL' или 'IS NOT NULL'Динамические параметры Oracle
Вот простой PL/SQL-запрос:
CREATE OR REPLACE PROCEDURE GET_ALL_INFORMATION
(
"PARAM_START_DATE" IN DATE,
"PARAM_END_DATE" IN DATE,
"PARAM_IS_SUBMITTED" IN NUMBER,
"EXTRACT_SUBMITTED_CONTACTS" OUT sys_refcursor
) IS
sql_stmt VARCHAR2(3000);
PARAM_CONDITION VARCHAR2(20);
BEGIN
IF PARAM_IS_SUBMITTED = 1 THEN
PARAM_CONDITION := 'NOT NULL';
ELSE
PARAM_CONDITION := 'NULL';
END IF;
sql_stmt := ' SELECT
REGISTRATION_NUMBER,
NAME PROVIDER_TYPE,
ORGANIZATION
FROM TABLE_A
WHERE
P.DATE_FINALIZED IS :A;
OPEN EXTRACT_SUBMITTED_CONTACTS FOR sql_stmt USING PARAM_CONDITION;
В то время как параметр (: A) в (С ИСПОЛЬЗОВАНИЕМ PARAM_CONDITION) должен иметь 'NULL' или 'НЕ НОЛЬ'. Кажется, он не работает так, как я себе представлял.
Я что-то упустил?
параметры Bind не могут быть использованы в этой моде. Кроме того, вам, похоже, не хватает закрывающей одинарной кавычки. Если вы собираетесь использовать динамический SQL, просто создайте свое строковое значение, чтобы прямо содержать 'is null 'или' is not null'. – GriffeyDog