Есть ли способ обойти это? Я должен взять дату в качестве входных данных и выполнить ее в процедуре PL-SQL.
ref_d := '03042017';
select count(*) into count_num
from EGB_RDMS_RULE
where ref_d = to_date('03042017','DDMMYYYY'); -- This statement works
select count(*) into count_num2
from EGB_RDMS_RULE
where ref_d = to_date(ref_d,'DDMMYYYY'); -- This doesnt work
Может кто-нибудь объяснить, почему второе утверждение не работает?
2 ответа
Я подозреваю, что ref_d
- это столбец в вашей таблице.
Я всегда ставлю перед локальными переменными что-то, чтобы указать, что они не являются столбцами. Итак, я подозреваю, что вы хотите что-то вроде этого:
v_ref_d := '03042017';
select count(*) into count_num2
from EGB_RDMS_RULE
where ref_d = to_date(v_ref_d, 'DDMMYYYY');
Попробуйте вызвать ref_d вне функции! Это может сработать
Новые вопросы
sql
Язык структурированных запросов (SQL) - это язык запросов к базам данных. Вопросы должны включать примеры кода, структуру таблицы, примеры данных и тег для используемой реализации СУБД (например, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 и т. Д.). Если ваш вопрос относится исключительно к конкретной СУБД (использует определенные расширения / функции), используйте вместо этого тег этой СУБД. Ответы на вопросы, помеченные SQL, должны использовать стандарт ISO / IEC SQL.