Есть ли способ обойти это? Я должен взять дату в качестве входных данных и выполнить ее в процедуре 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 

Может кто-нибудь объяснить, почему второе утверждение не работает?

0
thealchemist 24 Апр 2017 в 16:46

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');
3
Gordon Linoff 24 Апр 2017 в 13:49

Попробуйте вызвать ref_d вне функции! Это может сработать

2
Achala Yasas Piyarathna 30 Апр 2017 в 06:28
43589865