SQL बनाम PL/SQL: मुख्य अंतर
SQL (स्ट्रक्चर्ड क्वेरी लैंग्वेज) डेटाबेस के लिए मानक घोषणात्मक भाषा है। PL/SQL (प्रोसीजरल लैंग्वेज/एसक्यूएल) Oracle का प्रक्रियात्मक विस्तार है जो SQL में प्रोग्रामिंग निर्माण जोड़ता है।
तुलना तालिका
| क्र.सं. |
पहलू |
SQL |
PL/SQL |
| 1 |
परिभाषा |
डेटाबेस के लिए स्ट्रक्चर्ड क्वेरी लैंग्वेज |
डेटाबेस के लिए SQL का उपयोग करने वाली प्रोग्रामिंग भाषा |
| 2 |
चर |
कोई चर नहीं |
चर, डेटा प्रकार, स्थिरांक हैं |
| 3 |
नियंत्रण संरचनाएं |
कोई FOR लूप, IF, आदि नहीं |
FOR/WHILE लूप, IF नियंत्रण, अपवाद प्रबंधन |
| 4 |
संचालन |
एक समय में एकल संचालन निष्पादित करता है |
एक ब्लॉक में एकाधिक संचालन निष्पादित कर सकता है |
| 5 |
भाषा प्रकार |
घोषणात्मक भाषा |
प्रक्रियात्मक भाषा |
| 6 |
एम्बेडिंग |
PL/SQL ब्लॉक में एम्बेड किया जा सकता है |
SQL कोड में भी एम्बेड किया जा सकता है |
| 7 |
इंटरेक्शन |
डेटाबेस सर्वर के साथ सीधे इंटरैक्ट करता है |
डेटाबेस सर्वर के साथ सीधे इंटरैक्ट नहीं करता |
| 8 |
उन्मुखीकरण |
डेटा-उन्मुख भाषा |
एप्लिकेशन-उन्मुख भाषा |
| 9 |
उद्देश्य |
क्वेरी लिखने, DDL/DML निष्पादित करने के लिए |
प्रोग्राम ब्लॉक, फ़ंक्शन, प्रोसीजर, ट्रिगर, पैकेज लिखने के लिए |
SQL विशेषताएं
- सेट-आधारित संचालन: एक स्टेटमेंट में पंक्तियों के सेट पर काम करता है
- घोषणात्मक: क्या चाहिए बताता है, कैसे नहीं
- मानक: ANSI/ISO मानक, सभी RDBMS पर पोर्टेबल
- एटॉमिक स्टेटमेंट: प्रत्येक स्टेटमेंट स्वतंत्र है
PL/SQL विशेषताएं
- ब्लॉक संरचना: DECLARE, BEGIN, EXCEPTION, END
- चर और प्रकार: स्केलर, रिकॉर्ड, संग्रह, कर्सर
- नियंत्रण प्रवाह: IF, CASE, LOOP, WHILE, FOR, GOTO
- अपवाद प्रबंधन: BEGIN...EXCEPTION...END
- मॉड्यूलर इकाइयाँ: प्रोसीजर, फ़ंक्शन, पैकेज, ट्रिगर, प्रकार
- प्रदर्शन: नेटवर्क राउंड-ट्रिप कम करता है
कोड तुलना
-- SQL: एकल स्टेटमेंट
UPDATE employees SET salary = salary * 1.1 WHERE department_id = 10;
-- PL/SQL: प्रोग्राम ब्लॉक
DECLARE
v_dept_id NUMBER := 10;
v_pct NUMBER := 0.10;
v_updated NUMBER;
BEGIN
UPDATE employees
SET salary = salary * (1 + v_pct)
WHERE department_id = v_dept_id;
v_updated := SQL%ROWCOUNT;
DBMS_OUTPUT.PUT_LINE(v_updated || ' rows updated');
IF v_updated = 0 THEN
RAISE_APPLICATION_ERROR(-20001, 'No employees in dept ' || v_dept_id);
END IF;
END;
अन्य डेटाबेस में समकक्ष
| डेटाबेस | प्रक्रियात्मक भाषा |
| Oracle | PL/SQL |
| SQL Server | T-SQL |
| PostgreSQL | PL/pgSQL |
| MySQL | MySQL Stored Programs |
| DB2 | SQL PL |