Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

वैरिएबल कैसे घोषित करें और उसी Oracle SQL स्क्रिप्ट में इसका उपयोग कैसे करें?

SQL*प्लस स्क्रिप्ट में वैरिएबल घोषित करने के कई तरीके हैं।

बाइंड वैरिएबल घोषित करने के लिए सबसे पहले VAR का उपयोग करना है। VAR को मान निर्दिष्ट करने की क्रियाविधि EXEC कॉल के साथ है:

SQL> var name varchar2(20)
SQL> exec :name := 'SALES'

PL/SQL procedure successfully completed.

SQL> select * from dept
  2  where dname = :name
  3  /

    DEPTNO DNAME          LOC
---------- -------------- -------------
        30 SALES          CHICAGO

SQL>

एक VAR विशेष रूप से तब उपयोगी होता है जब हम एक संग्रहीत कार्यविधि को कॉल करना चाहते हैं जिसमें OUT पैरामीटर या कोई फ़ंक्शन होता है।

वैकल्पिक रूप से हम प्रतिस्थापन चर का उपयोग कर सकते हैं। ये इंटरेक्टिव मोड के लिए अच्छे हैं:

SQL> accept p_dno prompt "Please enter Department number: " default 10
Please enter Department number: 20
SQL> select ename, sal
  2  from emp
  3  where deptno = &p_dno
  4  /
old   3: where deptno = &p_dno
new   3: where deptno = 20

ENAME             SAL
---------- ----------
CLARKE            800
ROBERTSON        2975
RIGBY            3000
KULASH           1100
GASPAROTTO       3000

SQL>

जब हम एक स्क्रिप्ट लिख रहे होते हैं जो अन्य लिपियों को बुलाती है तो यह वैरिएबल को पहले से परिभाषित करने के लिए उपयोगी हो सकता है। यह स्निपेट मुझे कोई मान दर्ज करने का संकेत दिए बिना चलता है:

SQL> def p_dno = 40
SQL> select ename, sal
  2  from emp
  3  where deptno = &p_dno
  4  /
old   3: where deptno = &p_dno
new   3: where deptno = 40

no rows selected

SQL>

अंत में अनाम PL/SQL ब्लॉक है। जैसा कि आप देख सकते हैं, हम अभी भी घोषित चरों को अंतःक्रियात्मक रूप से मान निर्दिष्ट कर सकते हैं:

SQL> set serveroutput on size unlimited
SQL> declare
  2      n pls_integer;
  3      l_sal number := 3500;
  4      l_dno number := &dno;
  5  begin
  6      select count(*)
  7      into n
  8      from emp
  9      where sal > l_sal
 10      and deptno = l_dno;
 11      dbms_output.put_line('top earners = '||to_char(n));
 12  end;
 13  /
Enter value for dno: 10
old   4:     l_dno number := &dno;
new   4:     l_dno number := 10;
top earners = 1

PL/SQL procedure successfully completed.

SQL>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. दिनांक सीमा के अनुसार डुप्लिकेट मानों को संक्षिप्त करने के लिए SQL क्वेरी

  2. मैं Oracle BLOB फ़ील्ड से फ़ाइलें कैसे निकाल सकता हूँ?

  3. Oracle में ASCII () फ़ंक्शन

  4. oracle NCHAR या NVARCHAR कॉलम में राष्ट्रीय वर्ण डालने से काम नहीं चलता

  5. Oracle डेटाबेस में FORALL स्टेटमेंट का परिचय