Variables, Constants and Data Type

Variables એ નામ આપેલા memory ના ડબ્બા છે જે બદલાતો data સંઘરે છે, constants એવા તાળું મારેલા ખોખાં છે જે ક્યારેય બદલાતાં નથી, અને data types નક્કી કરે છે કે એમની અંદર કેવો data બેસે.

10 min read · 10 cards · 2 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

ગતિશીલ College Registry

કલ્પો કે તમે ધમધમતા college admissions દરમિયાન CampusLib application સંભાળી રહ્યા છો. એક student નું રહેઠાણનું સરનામું કે phone number semesters દરમિયાન અનેક વાર બદલાઈ શકે છે, પણ એમનો University Roll Number પહેલા દિવસથી કાયમ માટે થીજેલો રહે છે. Database programming માં, તમે values ને hardcode કરી શકતા નથી કારણ કે અમુક data પાણીની જેમ વહે છે, જ્યારે બીજો data સંપૂર્ણપણે પથ્થરમાં કોતરાયેલો હોય છે. PL/SQL માં આને સુઘડ રીતે સંભાળવા, આપણે variables, constants, અને data types પર પ્રભુત્વ મેળવવું પડશે.

Theory

Label લગાવેલાં Storage ખોખાં

એક variable ને 'Lunch' label વાળા plastic ના tiffin ડબ્બા જેવું વિચારો. આજે એમાં maggi છે; કાલે તમે એને ધોઈને fried rice ભરી શકો. ડબ્બાનું label એનું એ જ રહે છે, પણ અંદરની સામગ્રી બદલાય છે. એક constant એ સીલ મારેલા, થપ્પો લગાવેલા university exam ના પરબીડિયા જેવો છે, એક વાર મુખ્ય કચેરીએ પેક થયા પછી, નિયમો તોડ્યા વગર કોઈ અંદરનું બદલી શકતું નથી. એક Data Type ખાલી ડબ્બાનો ભૌતિક આકાર છે: એક ગોળ thermos માત્ર પ્રવાહી વસ્તુઓ રાખી શકે (જેમ કે DATE કે NUMBER), જ્યારે એક સપાટ folder લખાણનાં પાનાં રાખે છે (જેમ કે VARCHAR2).

Theory

સમજદાર Memory ફાળવવી

ઔપચારિક રીતે, એક Variable એ નામ આપેલી memory ની જગ્યા છે જેની value program ના execution દરમિયાન વધઘટ થઈ શકે છે, જ્યારે એક Constant CONSTANT keyword વાપરીને ખાતરી કરે છે કે એની initialize થયેલી value આખા transaction block દરમિયાન માત્ર વાંચી શકાય એવી રહે. પાયાના scalar types ઉપરાંત, Oracle એક ભવ્ય ટૂંકું ઓજાર રજૂ કરે છે: %TYPE attribute. v_name members.name%TYPE; લખીને, તમે Oracle ને કહો છો કે એ table column માંથી બિલકુલ એ જ data type અને લંબાઈનું configuration આપોઆપ નકલ કરે, જેથી પછીથી કોઈ system administrator database field નું કદ વધારે તો પણ code crash ન થાય.

At a glance

PL/SQL માં data સંઘરવાના elements ના મુખ્ય સંરચનાત્મક ગુણધર્મો

Element નો પ્રકારSyntax Layout નો નિયમValue ની પરિવર્તનશીલતાશ્રેષ્ઠ ઉપયોગ
Variablevariable_name data_type [:= value];BEGIN block ની અંદર ગમે ત્યારે ફરીથી લખી શકાય છેUser inputs, loop counters, કે એક જ query નાં પરિણામો સંઘરવા
Constantconstant_name CONSTANT data_type := value;સખ્તાઈથી માત્ર વાંચી શકાય એવો; ફરીથી સોંપાય તો compile error ફેંકે છેનિશ્ચિત tax rates, પુસ્તક check-out ની મહત્તમ મર્યાદા, કે ગાણિતિક અચળાંકો
%TYPE Anchorvariable_name table.column%TYPE;મૂળ column ના type ના નિયમો સંપૂર્ણપણે વારસામાં લે છેમહત્તમ data લંબાઈ hardcode કર્યા વગર database row ની values સલામત રીતે લાવવી

Practical

Declaring and Testing Memory Anchors

-- A sample block demonstrating safe variable and constant declarations
DECLARE
  -- Constant: Max books allowed must be initialized immediately
  MAX_BOOKS_ALLOWED CONSTANT NUMBER := 5;
  
  -- Smart Variable: Automatically inherits data type from CampusLib schema
  v_book_title      books.title%TYPE;
  
  -- Standard Variable with a default initialization value
  v_current_fine    NUMBER(5,2) := 0.00;
BEGIN
  -- Assigning a value to our smart variable using the proper operator
  v_book_title := 'Mastering Oracle';
  v_current_fine := 45.50;
  
  DBMS_OUTPUT.PUT_LINE('Book Title: ' || v_book_title);
  DBMS_OUTPUT.PUT_LINE('Fine Amount: Rs. ' || v_current_fine);
  DBMS_OUTPUT.PUT_LINE('Max Limit: ' || MAX_BOOKS_ALLOWED);
END;
/

Copy કરીને Oracle FreeSQL ખોલો
Oracle FreeSQL, Oracle SQL નું મફત online editor છે. Code પહેલા copy થઈ જાય છે: તેને ત્યાં paste કરીને Run કરો.

Follow along

Oracle Runtime પર %TYPE કેવી રીતે Process કરે છે

  1. 1. Schema ની તપાસ Oracle compiler declaration section વાંચે છે અને database dictionary માં લક્ષ્ય table (દા.ત. books) શોધે છે.
  2. 2. માળખાનું પ્રતિબિંબ એ ચાલતાં ચાલતાં નિર્દિષ્ટ column નો data type અને ચોક્કસ byte કદ (દા.ત. VARCHAR2(100)) કાઢે છે.
  3. 3. Memory ની ફાળવણી Compiler તમારા સ્થાનિક PL/SQL variable ના configuration માટે એકસરખું આંતરિક storage buffer ફાળવે છે.
  4. 4. છૂટું પડેલું Execution Database administrators પછીથી column ના કદ બદલે તો પણ variable સલામત રીતે ચાલે છે, હાથે code update કરવાનું દૂર કરતાં.

Quiz

જો તમે DECLARE section માં CONSTANT keyword વાપરીને એક constant જાહેર કરો પણ ત્યાં જ એને એક શરૂઆતની value સોંપવાનું ભૂલી જાઓ તો શું થાય છે?

  1. Oracle આપોઆપ 0 કે એક ખાલી string ની default value સોંપે છે.
  2. Oracle તમને એને ખાલી જાહેર કરવા અને પછીથી BEGIN block ની અંદર એની value સોંપવા દે છે.
  3. Oracle એક compilation error ફેંકે છે કારણ કે constants ને જાહેર થવાની બિલકુલ એ જ ક્ષણે initialize કરવા જ પડે છે.
  4. Block સફળતાપૂર્વક compile થાય છે પણ constant ને આપોઆપ એક standard variable માં ફેરવી નાખે છે.
Show the answer

Oracle એક compilation error ફેંકે છે કારણ કે constants ને જાહેર થવાની બિલકુલ એ જ ક્ષણે initialize કરવા જ પડે છે.

કારણ કે constants સંપૂર્ણપણે માત્ર વાંચી શકાય એવા છે, એમને પછીથી executable block માં બદલી શકાતા નથી. તેથી, Oracle સખ્તાઈથી લાગુ કરે છે કે તમારે એક constant ને એની જાહેરાત વખતે જ assignment operator (:=) કે DEFAULT keyword વાપરીને એક value થી initialize કરવો જ પડશે.

Watch out

ચૂપચાપ ચાલતો NULL Arithmetic ફાંદો

જો તમે v_total_fine NUMBER; જેવો એક standard numeric variable જાહેર કરો અને એને સ્પષ્ટપણે := 0 થી initialize ન કરો, Oracle એની default સંરચનાત્મક સ્થિતિ NULL રાખે છે. SQL અને PL/SQL માં, એક NULL value પર કરેલી કોઈ પણ ગાણિતિક ક્રિયા તરત NULL માં પરિણમે છે (દા.ત. 50 + NULL = NULL). જો તમે એક initialize ન થયેલા variable માં મોડું fee ઉમેરવાનો પ્રયાસ કરો, તમારી કુલ ગણતરી કોરી જગ્યામાં ગાયબ થઈ જાય છે! હંમેશા numeric counters ને 0 થી initialize કરો.

Think first

ગતિશીલ Columns Schema ની કસોટી

માનસિક પડકાર: જો તમે તમારા database schema માં એક table ના column ની વ્યાખ્યા VARCHAR2(50) થી બદલીને VARCHAR2(100) કરો, તો શું તમારે %TYPE દ્વારા એ column નો સંદર્ભ લેતો PL/SQL block હાથે શોધીને, ફરીથી લખીને, ફરીથી compile કરવો પડશે? Tap કરતાં પહેલાં વિચારો.

Show the answer

ના, નહીં પડે! એ જ %TYPE નો શુદ્ધ maintenance નો જાદુ છે. આગલી વાર જ્યારે PL/SQL block ચાલશે, Oracle dynamically અપડેટ થયેલી data dictionary તપાસે છે, નવી VARCHAR2(100) ફાળવણીનું કદ પારખે છે, અને એક પણ લીટીના હાથે કરેલા code edits વગર એ આપોઆપ તમારા variable પર લાગુ કરે છે.

Summary

Key takeaways

  • Variables વધઘટ થતા data ના buffers રાખે છે જે executable block ની અંદર ગમે ત્યારે ફરીથી લખી શકાય છે.
  • Constants CONSTANT keyword વાપરે છે અને એમને જાહેરાત વખતે જ એક અપરિવર્તનીય value સોંપવી જ પડે છે.
  • Scalar data types text strings, numbers, dates, અને સત્યની સ્થિતિ જેવી પાયાની અલગ values આવરી લે છે.
  • %TYPE attribute સ્થાનિક variables ને ખરેખરા database schema columns સાથે dynamically બાંધે છે.
  • Initialize ન થયેલા variables NULL પર default થાય છે, જે ધ્યાન ન રખાય તો ગાણિતિક ગણતરીઓ ચૂપચાપ ભૂંસી શકે છે.
  • Memory hook: Variables છૂટાં પાનાં છે, constants પાકા પૂંઠાં છે, અને %TYPE એક જીવંત સંરચનાત્મક અરીસો છે!

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from PL/SQL and Conditional and Iterative Statements

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati

Variables, Constants and Data Type · Concepts of Relational Database Management Systems · Gri-Learn