संशोधित उत्तर
यदि आप इस कोड को किसी अन्य प्रोग्राम से कॉल नहीं कर रहे हैं, तो एक विकल्प है कि 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;