Oracle SQL: باستخدام متغير BIND للتواريخ
سؤال
فيما يلي استعلام عمل بسيط بدون متغيرات ربط:
select * from table1 where time_stamp > sysdate - INTERVAL '1' day;
أين time_stamp
من النوع DATE
.
يجب أن أكون قادرًا على إدخال أي عدد من الأيام في الاستعلام أعلاه باستخدام متغير ربط.
لذلك جربت ما يلي ولا يبدو أنه يعمل:
select * from table1 where time_stamp > sysdate - INTERVAL :days day;
حاولت إدخال المدخلات الرقمية على حد سواء كـ 10 و "10" ، على سبيل المثال. لقد حصلت ORA-00933 خطأ في 10g.
المحلول
السلسلة INTERVAL '1' day
في استعلامك الأصلي هو حرفي فاصل ، أي يتم تقييمه بواسطة المحلل إلى قيمة واحدة. لا يمكنك استبدال جزء منه بمتغير ربط.
إذا استخدمت بدلاً من ذلك NUMTODSINTERVAL( 1, 'DAY' )
, ، ثم 1 هو عدد صحيح حرفي يجب أن تكون قادرًا على استبداله بمتغير ربط.
لا تنتمي إلى StackOverflow