वेरिएबल बाइंड करें और प्रतिस्थापन चर अलग-अलग चीजें हैं, इसलिए समस्या का शब्दांकन भ्रामक है। और यह बाइंड वेरिएबल्स का सिर्फ SQL*प्लस संस्करण है; इसका अर्थ पार्सर से थोड़ा अलग (या कम से कम कम स्पष्ट) हो सकता है।
अनिवार्य रूप से आप पीएल/एसक्यूएल चर को एसक्यूएल * प्लस प्रतिस्थापन चर के साथ भ्रमित कर रहे हैं। जब आप &d_length
. का संदर्भ देते हैं आप एक प्रतिस्थापन चर परिभाषित कर रहे हैं, और उस बिंदु पर उपयोगकर्ता को इसके मूल्य के लिए संकेत दिया जाएगा। लेकिन यह d_length
. से पूरी तरह से स्वतंत्र है पीएल/एसक्यूएल में DECLARE
ब्लॉक करें।
आप देख सकते हैं ACCEPT
कोड>
ब्लॉक शुरू करने से पहले उपयोगकर्ता से मूल्य प्राप्त करने के लिए एक साफ-सुथरे तरीके के लिए कमांड, लेकिन आप इसे इस तरह भी कर सकते हैं:
SET SERVEROUTPUT ON
DECLARE
d_length NUMBER := &q_length;
d_height NUMBER := &q_height;
d_width NUMBER := &q_width;
d_volume NUMBER;
BEGIN
DBMS_OUTPUT.PUT_LINE('The length dimension is: ' || d_length);
DBMS_OUTPUT.PUT_LINE('The height dimension is: ' || d_height);
DBMS_OUTPUT.PUT_LINE('The width dimension is: ' || d_width);
d_volume := d_length * d_height * d_width;
DBMS_OUTPUT.PUT_LINE(
'The rectangular prism volume for the swimming pool is: '
|| d_volume);
DBMS_OUTPUT.PUT_LINE(
'The dimensions of the swimming pool are ' || '?');
END;
/
सुनिश्चित नहीं है कि आप आउटपुट की अंतिम पंक्ति क्या दिखाना चाहते हैं; क्या यह पहले से दिखाए गए तीन आयामों से अलग है?
आप इसे VARIABLE
आदेश
:
SET SERVEROUTPUT ON
VARIABLE d_length NUMBER;
VARIABLE d_height NUMBER;
VARIABLE d_width NUMBER;
DECLARE
d_volume NUMBER;
BEGIN
:d_length := &q_length;
:d_height := &q_height;
:d_width := &q_width;
DBMS_OUTPUT.PUT_LINE('The length dimension is: ' || :d_length);
DBMS_OUTPUT.PUT_LINE('The height dimension is: ' || :d_height);
DBMS_OUTPUT.PUT_LINE('The width dimension is: ' || :d_width);
d_volume := :d_length * :d_height * :d_width;
DBMS_OUTPUT.PUT_LINE(
'The rectangular prism volume for the swimming pool is: '
|| d_volume);
DBMS_OUTPUT.PUT_LINE(
'The dimensions of the swimming pool are ' || '?');
END;
/
ध्यान दें कि d_length
, d_height
और d_width
इस संस्करण में कोलन के साथ उपसर्ग हैं, क्योंकि वे बाध्य चर हैं। लेकिन d_volume
ऐसा इसलिए नहीं है क्योंकि यह अभी भी पीएल/एसक्यूएल ब्लॉक में घोषित किया गया है। और वास्तविक मान अभी भी उपयोगकर्ता से प्रतिस्थापन चर के रूप में पुनर्प्राप्त किए जा रहे हैं। हालांकि यह थोड़ा जटिल है; उन्हें बाइंड वैरिएबल बनाना वास्तव में यहाँ कुछ भी नहीं जोड़ रहा है।