SAP ABAP-এ Native SQL (EXEC SQL ... ENDEXEC) ব্লকে ABAP ভেরিয়েবল ব্যবহার করার সময় ভেরিয়েবল নামের আগে কোলন (:) দিতে হয়। এটি হোস্ট ভেরিয়েবল (host variable) নির্দেশ করে।
সমস্যা
Native SQL-এ sy-datum (সিস্টেম ডেট) সরাসরি ব্যবহার করলে ডেট ভ্যালু পপুলেট হয় না বা সিনট্যাক্স এরর হয়।
সমাধান: কোলন (:) ব্যবহার করুন
EXEC SQL.
INSERT INTO order VALUES('2', :sy-datum)
ENDEXEC.
ব্যাখ্যা
:sy-datum— কোলন দিয়ে ABAP ভেরিয়েবলকে SQL-এ হোস্ট ভেরিয়েবল হিসেবে পাস করা হয়।- নেইলে SQL পার্সার এটিকে কলাম নাম বা লিটারাল ধরে নিতে পারে।
সুপারিশ: OpenSQL ব্যবহার করুন
Native SQL ডাটাবেস-স্পেসিফিক ফিচার ব্যবহার করার জন্য (যেমন: vendor-specific hints, stored procedures, window functions যা OpenSQL-এ নেই)। জেনারিক INSERT/UPDATE/SELECT এর জন্য OpenSQL (ABAP SQL) ব্যবহার করুন:
INSERT INTO order VALUES '2' SY-DATUM.
- OpenSQL ডাটাবেস-ইনডিপেন্ডেন্ট (Database Independent)।
- অটোমেটিক ক্লায়েন্ট হ্যান্ডলিং (Mandt), অথোরিটি চেক, বাফারিং।
- সিনট্যাক্স সিম্পল এবং টাইপ-সেফ।
মূল পয়েন্টসমূহ
- Native SQL-এ ABAP ভেরিয়েবল ব্যবহার করতে হলে
:(কোলন) প্রিফিক্স আবশ্যক। - জেনারিক DML-এ OpenSQL ব্যবহার করুন (বেস্ট প্র্যাকটিস)۔
- Native SQL শুধু ডাটাবেস-স্পেসিফিক ফিচার জন্য।
- Native SQL-এ টেবিল নাম কেস-সেনসিটিভ হতে পারে (ডাটাবেস অনুযায়ী)۔