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

PLSQL बाइंड चर और होस्ट चर के बीच क्या अंतर है

C# के इस स्निपेट पर विचार करें:

int    v_empno = 7369;
string v_ename;

OracleCommand cmd = con.CreateCommand();
cmd.Parameters.Add("paramEmpno", OracleDbType.Decimal, v_empno, ParameterDirection.Input);
cmd.CommandText = "select e.ename from scott.emp e where e.empno = :1";
v_ename = cmd.ExecuteScalar().ToString();

v_empno और v_ename मेजबान चर हैं। यहां आप :1 . के रूप में उपयोग के लिए स्पष्ट रूप से अपना बाइंड वैरिएबल बनाते हैं आपके बयान में।

पीएल/एसक्यूएल के इस स्निपेट पर विचार करें:

declare
   v_empno  number := 7369;
   v_ename  varchar2(10);
begin
   select e.ename
     into v_ename
     from scott.emp e
    where e.empno = v_empno;
   dbms_output.put_line(v_ename);
end;
/

फिर से घोषित चर v_empno और v_ename मेजबान चर माना जा सकता है, लेकिन जब वे पीएल/एसक्यूएल कोड के भीतर स्थिर एसक्यूएल में उपयोग किए जाते हैं, तो वे स्वचालित रूप से पीएल/एसक्यूएल कंपाइलर/इंजन द्वारा बाध्य चर में बदल जाते हैं - आपको मैन्युअल रूप से अपना बाइंड वैरिएबल बनाने की ज़रूरत नहीं है सी # उदाहरण। यदि आप उस SQL ​​​​की जांच करते हैं जिसे वास्तव में PL/SQL के इस टुकड़े द्वारा निष्पादित किया जाता है, तो यह कुछ इस तरह दिखाई देगा:

   select e.ename
     from scott.emp e
    where e.empno = :B1

वह PL/SQL कंपाइलर है जिसने स्वचालित रूप से :B1 . बनाया है आपके v_empno . के लिए बाइंड वैरिएबल पीएल/एसक्यूएल चर। और यही टॉम काइट का मतलब है कि आप वास्तव में पीएल/एसक्यूएल में होस्ट वैरिएबल और बाइंड वैरिएबल के बीच उचित अंतर नहीं कर सकते हैं। जब आप पीएल/एसक्यूएल लिखते हैं तो पीएल/एसक्यूएल कोड में उपयोग किए जाने पर वेरिएबल होस्ट वैरिएबल होते हैं और साथ ही वे एम्बेडेड एसक्यूएल कोड में उपयोग किए जाने पर बाध्य चर होते हैं। आपको PL/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. Oracle उत्परिवर्तित ट्रिगर

  2. पीएल/एसक्यूएल में बूलियन का प्रयोग

  3. एकाधिक रिकॉर्ड पर Oracle अधिकतम तिथि चुनें

  4. Oracle के साथ CLOB कॉलम पर GROUP BY का उपयोग कैसे करें?

  5. Oracle पर SYSDATE के लिए UTC मान कैसे प्राप्त करें?