আসলে, আমি বিআইআরটি রিপোর্টে এই ধরণের জিনিস ব্যবহার করেছি। বিআইআরটি রানটাইমে পাস করা ক্যোয়ারীটি ফর্মটির:
select a,b,c from t where a = ?
এবং '?' একটি ড্রপ ডাউন বাক্স থেকে নির্বাচিত একটি প্রকৃত প্যারামিটার মান দ্বারা রানটাইম এ প্রতিস্থাপন করা হয়। ড্রপ-ডাউন-এ পছন্দগুলি দেওয়া হয়েছে:
select distinct a from t
union all
select '*' from sysibm.sysdummy1
যাতে আপনি সমস্ত সম্ভাব্য মান প্লাস " *
" পান। যদি ব্যবহারকারী *
ড্রপ ডাউন বাক্স থেকে " " নির্বাচন করে (যার অর্থ একটি এর সমস্ত মান নির্বাচন করা উচিত), ক্যোয়ারী চালানোর আগে (জাভাস্ক্রিপ্ট দ্বারা) পরিবর্তন করতে হবে।
যেহেতু "?" একটি অবস্থানগত প্যারামিটার এবং অন্যান্য জিনিস কাজ করার জন্য সেখানে থাকতে হবে, জাভাস্ক্রিপ্টটি ক্যোয়ারীটি হতে পরিবর্তন করে:
select a,b,c from t where ((a = ?) or (1==1))
এটি মূলত অবস্থানগত প্যারামিটারটিকে স্থানে রেখে যখন ক্লজটির প্রভাবটি সরিয়ে দেয়।
গতিশীলভাবে একটি এসকিউএল কোয়েরি তৈরি করার সময় অলস কোডারদের দ্বারা ব্যবহৃত এ্যান্ড কেসটিও আমি দেখেছি।
বলুন আপনাকে গতিশীলভাবে এমন কোয়েরি তৈরি করতে হবে যা দিয়ে শুরু হয় select * from t
এবং চেক করে:
- নাম বব; এবং
- বেতন> 20,000 ডলার হয়
কিছু লোক প্রথমে একটি WHERE এবং এর সাথে পরবর্তীগুলির সাথে একটি এবং এর সাথে যোগ করবে:
select * from t where name = 'Bob' and salary > 20000
অলস প্রোগ্রামারস (এবং এটি অগত্যা নয় খারাপ বৈশিষ্ট্যও নয়) যুক্ত হওয়া শর্তগুলির মধ্যে পার্থক্য করতে পারে না, তারা শুরু করে select * from t where 1=1
কেবল তারপরে এবং ক্লজ যুক্ত করবে।
select * from t where 1=1 and name = 'Bob' and salary > 20000