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

क्वेरी से अधिक मान लौटाने की प्रक्रिया में कर्सर

आपके पास एक नाम विरोध है। आपने अपने स्थानीय चरों को अपने कॉलम नामों के समान ही कहा है, और कॉलम नामों को प्राथमिकता दी जा रही है, जैसा कि दस्तावेज़ीकरण में बताया गया है:

<ब्लॉकक्वॉट>

यदि SQL कथन किसी ऐसे नाम का संदर्भ देता है जो स्तंभ और स्थानीय चर या औपचारिक पैरामीटर दोनों से संबंधित है, तो स्तंभ नाम को प्राथमिकता दी जाती है।

सावधानी:
जब एक चर या पैरामीटर नाम की व्याख्या स्तंभ नाम के रूप में की जाती है, तो डेटा को अनजाने में हटाया, बदला या सम्मिलित किया जा सकता है।

पहले चार चेक हमेशा सत्य होने जा रहे हैं (जब तक कि आपके पास शून्य मान न हों), इसलिए आपको प्रत्येक पंक्ति मिल जाएगी जिसमें done = 'N' है ।

अपने स्थानीय चर नामों को किसी और चीज़ में बदलें; स्थानीय चर, पैरामीटर और कॉलम के बीच अंतर करने के लिए उपसर्ग का उपयोग करना काफी सामान्य है, कुछ इस तरह:

Cursor linija IS 
SELECT *
FROM table_x X
where x.mjt = l_mjt
and   x.salesman = l_salesman
and x.kind = l_kind
and x.kolo1 = l_kolo1
and x.done = 'N';

यदि यह किसी अज्ञात ब्लॉक के बजाय संग्रहीत प्रक्रिया में है, तो आप प्रक्रिया/फ़ंक्शन नाम को उपसर्ग के रूप में उपयोग कर सकते हैं, जिसे कुछ लोग पसंद करते हैं। अगर आपकी प्रक्रिया को myproc . कहा जाता था , उदाहरण के लिए, आप यह कर सकते हैं:

Cursor linija IS 
SELECT *
FROM table_x X
where x.mjt = myproc.mjt
and   x.salesman = myproc.salesman
and x.kind = myproc.kind
and x.kolo1 = myproc.kolo1
and x.done = 'N';


  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 डेटाबेस के साथ Oracle JDeveloper 12c का उपयोग करना, भाग 1

  2. Oracle में LISTAGG अलग-अलग मान लौटाने के लिए

  3. Oracle दिनांक कॉलम में संग्रहीत अमान्य (दूषित) मानों की पहचान कैसे करें

  4. स्टेटिक बनाम डायनेमिक sql

  5. उन पंक्तियों को वापस करने के 2 तरीके जिनमें Oracle में संख्यात्मक मान नहीं हैं