2012-09-20 9 views
8

मैं ऑरैकल 10 जी पीएल/एसक्यूएल ब्लॉक (यानी उपयोगकर्ता के साथ इंटरैक्टिव संचार) में रनटाइम इनपुट लेना चाहता हूं, क्या यह संभव है?रनटाइम पर उपयोगकर्ता से इनपुट कैसे प्राप्त करें

declare 
x number; 
begin 
x=&x; 
end 

इस कोड त्रुटि देता है के रूप में & Oracle 10g में उपयोग नहीं किया जा सकता है।

उत्तर

16

उपयोगकर्ता इनपुट को पढ़ने और इसे एक चर में स्टोर करने के लिए, बाद में उपयोग के लिए, आप sqlplus कमांड ACCEPT का उपयोग कर सकते हैं।

Accept <your variable> <variable type if needed [number|char|date]> prompt 'message' 

उदाहरण

accept x number prompt 'Please enter something: ' 

और फिर आपको इस प्रकार PL/SQL ब्लॉक में x चर का उपयोग कर सकते हैं:

declare 
    a number; 
begin 
    a := &x; 
end; 
/
+1

: ORA-00,900: सर मुझे इस कोड की कोशिश की है, यह त्रुटि निम्न देता अमान्य एसक्यूएल बयान –

+0

महोदय यह संभव इनपुट सीधे लेने के लिए, sqlplus का उपयोग किए बिना है। –

+0

मैं इसे ओरेकल 10 जी डेटाबेस एक्सप्रेस संस्करण पर चला रहा हूं।sqlplus –

-7

अपने बहुत ही सरल

सिर्फ लिखने:

// पहली तालिका नामित परीक्षण बनाने ....

create table test (name varchar2(10),age number(5)); 

// जब आप उपरोक्त कोड एक मेज बनाया जाएगा ....

चलाने // अब हम एक नाम सम्मिलित करने के लिए है & एक उम्र ..

यकीन है कि उम्र इसे

insert into test values('Deepak', :age); 

// अब उपरोक्त कोड चलाने के लिए और आप हूँ में मान दर्ज करने के एक रूप है जो हमारी मदद करना चाहता है खोलने के माध्यम से डाला जाएगा प्राप्त "1 पंक्ति सम्मिलित" उत्पादन ...

/अब चयन क्वेरी चलाने उत्पादन को देखने के लिए

select * from test; 

// कि सभी है ..Now मैं कोई भी किसी भी प्रश्न को स्वीकार बचे है लगता है एक उपयोगकर्ता डेटा ...

+0

आशीर्वाद दें कृपया अपनी पोस्ट को और अधिक पठनीय बनाने के लिए कोड-स्वरूपण या इनलाइन कोड-तत्व का उपयोग करें। –

-4

प्रयास करें

declare 
    a number; 
begin 
    a := :a; 
dbms_output.put_line('Inputed Number is >> '|| a); 
end; 
/ 

OR 

declare 
    a number; 
begin 
    a := :x; 
dbms_output.put_line('Inputed Number is >> '|| a); 
end; 
/
0

है ऐसा इसलिए है क्योंकि आप मूल्य जो गलत है आवंटित करने के लिए निम्न पंक्ति का इस्तेमाल किया है।

x=&x; 

पीएल/एसक्यूएल असाइनमेंट में निम्नलिखित का उपयोग करके किया जाता है।

:=

तो अपने कोड इस तरह होना चाहिए।

declare 
    x number; 
    begin 
    x:=&x; 
-- Below line will output the number you received as an input 
    dbms_output.put_line(x); 
    end; 
    /
0
declare 
a number; 
b number; 
begin 
a:= :a; 
b:= :b; 
if a>b then 
dbms_output.put_line('Large number is '||a); 
else 
dbms_output.put_line('Large number is '||b); 
end if; 
end; 
+0

क्या आप समझा सकते हैं कि यह कैसे काम करता है? ध्यान दें कि प्रश्न 5 साल पहले पोस्ट किया गया था, कुछ लाइनों के साथ एक स्वीकार्य, अच्छी तरह से मतदान किया गया जवाब है, इसलिए इस समय के बाद एक लंबा दृष्टिकोण पोस्ट करने के लिए किसी भी तरह की टिप्पणी की आवश्यकता है कि यह मौजूदा उत्तरों में सुधार कैसे कर रहा है। – fedorqui

संबंधित मुद्दे