سؤال

فيما يلي استعلام عمل بسيط بدون متغيرات ربط:

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 هو عدد صحيح حرفي يجب أن تكون قادرًا على استبداله بمتغير ربط.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top