আমি কীভাবে ওরাকলে ভেরিয়েবলগুলি ঘোষণা করব এবং ব্যবহার করব?


18

আমার মূল দক্ষতা এসকিউএল সার্ভারের সাথে রয়েছে তবে আমাকে ওরাকল ক্যোয়ারির কিছু টিউনিং করতে বলা হয়েছে। আমি নিম্নলিখিত এসকিউএল লিখেছি:

declare @startDate int
select @startDate = 20110501

এবং আমি এই ত্রুটি পেয়েছি:

declare @startDate int
select @startDate = 20110501
Error at line 1
ORA-06550: line 1, column 9:
PLS-00103: Encountered the symbol "@" when expecting one of the following:

   begin function package pragma procedure subtype type use
   <an identifier> <a double-quoted delimited-identifier> form
   current cursor

আমি কীভাবে ওরাকলে ভেরিয়েবলগুলি ঘোষণা করব এবং ব্যবহার করব?

উত্তর:


18

Pl / sql ব্লকের ভিতরে:

declare
 startdate number;
begin
  select 20110501 into startdate from dual;
end;
/

একটি বাইন্ড ভেরিয়েবল ব্যবহার:

var startdate number;
begin
  select 20110501 into :startdate from dual;
end;
/

পিএল / এসকিউএল প্রক্রিয়া সফলভাবে সম্পন্ন হয়েছে।

SQL> print startdate

 STARTDATE
----------
  20110501

একটি প্রশ্নের মধ্যে:

select object_name 
from user_objects 
where created > to_date (:startdate,'yyyymmdd');  /*prefix the bind variable wïth ":" */

দুর্ভাগ্যক্রমে এটি আমার পক্ষে কাজ করে না। var my_num NUMBER; দ্বৈত থেকে আমার_নাম থেকে 12345 নির্বাচন করুন; শেষ; / my_table সা যেখানে থেকে sa.my_col =: my_num থেকে * নির্বাচন করুন;
ম্যাথু

আপনি কি ত্রুটি পেতে পারি? (সবেমাত্র পরীক্ষিত এবং কাজ করা হয়)
ik_zelf

আমি আসলে সমস্ত ট্রেডের জোনের পোস্ট করা সমাধানটি চেষ্টা করেছি এবং এটি আমার প্রয়োজনের জন্য পুরোপুরি কাজ করেছে - যেমন - ডিফাইন ব্যবহার করে এবং এর সাথে ভেরিয়েবলটি উল্লেখ করে।
ম্যাথু

3

এসকিউএল * প্লাস একটি অতিরিক্ত ফর্ম্যাট সমর্থন করে:

DEFINE StartDate = TO_DATE('2016-06-21');
DEFINE EndDate   = TO_DATE('2016-06-30');

SELECT
    *
FROM
    MyTable
WHERE
    DateField BETWEEN &StartDate and &EndDate;

ক্যোয়ারির মধ্যে বিকল্পগুলি সঞ্চালন করতে হবে এমন এম্পারস্যান্ডগুলি নোট করুন।


এই ওরাকল জন্য ব্যাঙের আমার পক্ষে কাজ যখন এই ফাংশন কোনো ব্যবহার করছে: Execute as scriptবা Execute via Toad script runnerবা Execute via SQL*Plus। তবে, আপনি যদি Execute/compile statement at caretএটির সাথে চালানোর চেষ্টা করেন তবে এটি একটি ত্রুটি বার্তা দেয়: "ORA-009000: অবৈধ এসকিউএল বিবৃতি"।
শার্লক স্প্রেডশিট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.