কম্পিউটার টিউটোরিয়াল

SAP Native SQL-এ ডেট ভ্যালু পপুলেট না হলে কোলন (:) ব্যবহার করা

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-এ টেবিল নাম কেস-সেনসিটিভ হতে পারে (ডাটাবেস অনুযায়ী)۔
  1. Java-এ PreparedStatement দিয়ে MySQL-এ NULL java.sql.Date ইনসার্ট করা

  2. MySQL-এ INSERT স্টেটমেন্ট ব্যবহার করার সময় অটো-ইনক্রিমেন্ট কলামে মান ইনসার্ট করতে হয় কি?

  3. Java ব্যবহার করে MySQL কলামে DATE ইনসার্ট করার পদ্ধতি

  4. পাইথনে MySQL-এ ডেট অবজেক্ট ইন্সার্ট কীভাবে করবেন?