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

मैं पीएल/एसक्यूएल में वेरिएबल कैसे घोषित और उपयोग कर सकता हूं जैसे मैं टी-एसक्यूएल में करता हूं?

संशोधित उत्तर

यदि आप इस कोड को किसी अन्य प्रोग्राम से कॉल नहीं कर रहे हैं, तो एक विकल्प है कि PL/SQL को छोड़ दें और इसे SQL में बाइंड वेरिएबल्स का उपयोग करके सख्ती से करें:

var myname varchar2(20);

exec :myname := 'Tom';

SELECT *
FROM   Customers
WHERE  Name = :myname;

कई टूल (जैसे टॉड और एसक्यूएल डेवलपर) में, var . को छोड़ कर और exec बयानों के कारण कार्यक्रम आपको मूल्य के लिए संकेत देगा।

मूल उत्तर

टी-एसक्यूएल और पीएल/एसक्यूएल के बीच एक बड़ा अंतर यह है कि ओरेकल आपको किसी क्वेरी के परिणाम को स्पष्ट रूप से वापस नहीं करने देता है। परिणाम हमेशा कुछ फैशन में स्पष्ट रूप से वापस किया जाना है। सबसे आसान तरीका है DBMS_OUTPUT . का उपयोग करना (मोटे तौर पर print . के बराबर ) वेरिएबल को आउटपुट करने के लिए:

DECLARE
   myname varchar2(20);
BEGIN
     myname := 'Tom';

     dbms_output.print_line(myname);
END;

हालांकि, यदि आप परिणाम सेट वापस करने का प्रयास कर रहे हैं तो यह बहुत उपयोगी नहीं है। उस स्थिति में, आप या तो एक संग्रह या एक पुनरावर्तक वापस करना चाहेंगे। हालांकि, उन समाधानों में से किसी एक का उपयोग करने के लिए आपके कोड को किसी फ़ंक्शन या प्रक्रिया में लपेटने और परिणामों को उपभोग करने में सक्षम किसी चीज़ से फ़ंक्शन/प्रक्रिया चलाने की आवश्यकता होगी। इस तरह से काम करने वाला एक फ़ंक्शन कुछ इस तरह दिख सकता है:

CREATE FUNCTION my_function (myname in varchar2)
     my_refcursor out sys_refcursor
BEGIN
     open my_refcursor for
     SELECT *
     FROM   Customers
     WHERE  Name = myname;

     return my_refcursor;
END my_function;


  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. Oracle यूनियन ऑपरेटर समझाया गया

  3. EM12c डेटाबेस समय व्यतीत प्रतीक्षा अलर्ट

  4. ORA-01461:केवल एक लंबे कॉलम में डालने के लिए एक लंबा मान बांध सकता है-क्वेरी करते समय होता है

  5. मैं अपने ऑरैकल डेटाबेस से कनेक्ट होने वाले सभी सत्रों को कैसे मार सकता हूं?