दिलचस्प पोस्ट
एएसपी .नेट एमवीसी और आईई कैशिंग – हेरिएट रिस्पांस हेडर अप्रभावी इरोटोथेनिस के छद्म खंड? जावास्क्रिप्ट / अजाक्स में HTTP हेड अनुरोध? सभी निकालें लेकिन NSString से संख्याएं बाल राज्यों में कोणीय यूआई राउटर नेस्टेड स्टेट का हल लघु IF – ELSE कथन सेटस्टेट विधि को राज्य क्यों तुरंत बदलना नहीं है? एकाधिक कुंजी के साथ एक नक्शा कैसे कार्यान्वित करें? क्या मैं ट्रैक किए गए फ़ाइलों के बाहर .git फ़ोल्डर को संग्रहीत कर सकता / सकती हूं? MVC प्रगति बार थ्रेडिंग सरल यूनिक्स कमांड, क्या है {} और \; के लिये अस्थायी, विजुअल स्टूडियो बग से बनी गैर-संविधान का संदर्भ? रूट लेआउट से संबंधित व्यू के निर्देशांक प्राप्त करना Ggplot2 बार ग्राफ में ऑर्डर बार क्या C ++ समर्थन चर लंबाई सरणी?

कैसे चर घोषित करने के लिए और उसी एसक्यूएल स्क्रिप्ट में उपयोग करें? (ओरेकल एसक्यूएल)

मैं एसक्यूएल में लिखे गए कुछ परीक्षण कर रहा हूं। मैं पुन: प्रयोज्य कोड लिखना चाहता हूं और इसलिए शुरुआत में कुछ वैरिएबल घोषित करना चाहता हूं और स्क्रिप्ट में इनका पुन: उपयोग करना चाहता हूं:

DEFINE stupidvar = 'stupidvarcontent'; SELECT stupiddata FROM stupidtable WHERE stupidcolumn = &stupidvar; 

मैं एक वैरिएबल कैसे घोषित कर सकता हूं और इसका पालन उन बयानों में कर सकता हूं जो इसका पालन करते हैं? (मैं एक ओरेकल डीबी तक पहुंचने के लिए SQLDeveloper का उपयोग कर रहा हूं।)

मैंने अभी तक कोशिश की:

  • DECLARE अनुभाग का उपयोग करें और BEGIN और END; में निम्नलिखित SELECT कथन डालें END; । वैरिएबल का इस्तेमाल करके &stupidvar का उपयोग करें।
  • कीवर्ड DEFINE का उपयोग करें और चर का उपयोग करें।
  • कीवर्ड के उपयोग से VARIABLE और VARIABLE का उपयोग करें।

लेकिन मेरे प्रयासों के दौरान मुझे सभी प्रकार की त्रुटियां मिल रही हैं (अनबाउंड वैरिएबल, सिंटैक्स त्रुटि, अपेक्षित SELECT INTO …)।

शुद्ध खोज करते समय मुझे बहुत सी स्पष्टीकरण मिलते हैं, एसक्यूएल, पीएल / एसक्यूएल से संबंधित

आपका अग्रिम में ही बहुत धन्यवाद!

वेब के समाधान से एकत्रित समाधान "कैसे चर घोषित करने के लिए और उसी एसक्यूएल स्क्रिप्ट में उपयोग करें? (ओरेकल एसक्यूएल)"

SQL * प्लस स्क्रिप्ट्स में वेरिएबल घोषित करने के कई तरीके हैं।

पहले VAR का उपयोग करना है VAR में मानों को निर्दिष्ट करने के लिए एक तंत्र EXEC कॉल के साथ है:

 SQL> var name varchar2(20) SQL> exec :name := 'SALES' PL/SQL procedure successfully completed. SQL> select * from dept 2 where dname = :name 3 / DEPTNO DNAME LOC ---------- -------------- ------------- 30 SALES CHICAGO SQL> 

एक VAR विशेष रूप से उपयोगी है जब हम एक संग्रहीत प्रक्रिया को कॉल करना चाहते हैं जिसमें OUT पैरामीटर या फ़ंक्शन हैं I

ऑल्टरनेटिवली हम उपनिवेश चर का उपयोग कर सकते हैं। इंटरैक्टिव मोड के लिए ये अच्छे हैं:

 SQL> accept p_dno prompt "Please enter Department number: " default 10 Please enter Department number: 20 SQL> select ename, sal 2 from emp 3 where deptno = &p_dno 4 / old 3: where deptno = &p_dno new 3: where deptno = 20 ENAME SAL ---------- ---------- CLARKE 800 ROBERTSON 2975 RIGBY 3000 KULASH 1100 GASPAROTTO 3000 SQL> 

जब हम एक स्क्रिप्ट लिख रहे हैं जो अन्य स्क्रिप्ट कॉल करता है, तो यह चर को अग्रेषित करने के लिए उपयोगी हो सकता है:

 SQL> def p_dno = 40 SQL> select ename, sal 2 from emp 3 where deptno = &p_dno 4 / old 3: where deptno = &p_dno new 3: where deptno = 40 no rows selected SQL> 

आखिरकार अज्ञात PL / SQL ब्लॉक है जैसा कि आप देख रहे हैं, हम अभी भी घोषित वैरिएबल के मूल्यों को अंतःक्रियात्मक रूप से निर्दिष्ट कर सकते हैं:

 SQL> set serveroutput on size unlimited SQL> declare 2 n pls_integer; 3 l_sal number := 3500; 4 l_dno number := &dno; 5 begin 6 select count(*) 7 into n 8 from emp 9 where sal > l_sal 10 and deptno = l_dno; 11 dbms_output.put_line('top earners = '||to_char(n)); 12 end; 13 / Enter value for dno: 10 old 4: l_dno number := &dno; new 4: l_dno number := 10; top earners = 1 PL/SQL procedure successfully completed. SQL> 

डबल कोट्स का उपयोग करने की कोशिश करें यदि यह एक चार चर है:

 DEFINE stupidvar = "'stupidvarcontent'"; 

या

 DEFINE stupidvar = 'stupidvarcontent'; SELECT stupiddata FROM stupidtable WHERE stupidcolumn = '&stupidvar' 

upd:

 SQL*Plus: Release 10.2.0.1.0 - Production on Wed Aug 25 17:13:26 2010 Copyright (c) 1982, 2005, Oracle. All rights reserved. SQL> conn od/od@etalon Connected. SQL> define var = "'FL-208'"; SQL> select code from product where code = &var; old 1: select code from product where code = &var new 1: select code from product where code = 'FL-208' CODE --------------- FL-208 SQL> define var = 'FL-208'; SQL> select code from product where code = &var; old 1: select code from product where code = &var new 1: select code from product where code = FL-208 select code from product where code = FL-208 * ERROR at line 1: ORA-06553: PLS-221: 'FL' is not a procedure or is undefined 

पीएल / एसक्यूएल v.10 में

कीवर्ड घोषित करने के लिए चर घोषित करने के लिए उपयोग किया जाता है

 DECLARE stupidvar varchar(20); 

एक मूल्य निर्दिष्ट करने के लिए जब आप घोषणा कर सकते हैं

 DECLARE stupidvar varchar(20) := '12345678'; 

या उस वेरिएबल में कुछ चुनने के लिए जो आप का उपयोग करते हैं INTO कथन, हालांकि आपको BEGIN और END में स्टेटमेंट को लपेटने की आवश्यकता है, आपको यह भी सुनिश्चित करना होगा कि केवल एक मान वापस किया जाए, और अर्धविरामों को मत भूलें।

इसलिए पूरा बयान निम्नलिखित के बाद आएगा:

 DECLARE stupidvar varchar(20); BEGIN SELECT stupid into stupidvar FROM stupiddata CC WHERE stupidid = 2; END; 

आपका चर केवल BEGIN और END भीतर प्रयोग करने योग्य है, यदि आप एक से अधिक उपयोग करना चाहते हैं, तो आपको एकाधिक BEGIN END रैपिंग करना होगा

 DECLARE stupidvar varchar(20); BEGIN SELECT stupid into stupidvar FROM stupiddata CC WHERE stupidid = 2; DECLARE evenmorestupidvar varchar(20); BEGIN SELECT evenmorestupid into evenmorestupidvar FROM evenmorestupiddata CCC WHERE evenmorestupidid = 42; INSERT INTO newstupiddata (newstupidcolumn, newevenmorestupidstupidcolumn) SELECT stupidvar, evenmorestupidvar FROM dual END; END; 

आशा है कि यह आपको कुछ समय बचाता है

यदि आप तिथि घोषित करना चाहते हैं और उसके बाद SQL डेवलपर में इसका उपयोग करना चाहते हैं

 DEFINE PROPp_START_DT = TO_DATE('01-SEP-1999') SELECT * FROM proposal WHERE prop_start_dt = &PROPp_START_DT 

सिर्फ मातस का उत्तर जोड़ना चाहते हैं शायद यह स्पष्ट है, लेकिन मैंने यह जानने के लिए लंबे समय तक खोज की है कि चर बस BEGIN-END निर्माण के अंदर पहुंच योग्य है , इसलिए यदि आपको बाद में कुछ कोड में इसका उपयोग करना है, तो आपको यह कोड BEGIN के अंदर डाल देना होगा -एण्ड ब्लॉक

ध्यान दें कि इन ब्लॉकों को नीडिंत किया जा सकता है :

 DECLARE x NUMBER; BEGIN SELECT PK INTO x FROM table1 WHERE col1 = 'test'; DECLARE y NUMBER; BEGIN SELECT PK INTO y FROM table2 WHERE col2 = x; INSERT INTO table2 (col1, col2) SELECT y,'text' FROM dual WHERE exists(SELECT * FROM table2); COMMIT; END; END; 

यहां आपका उत्तर है:

निर्धारित संख्या: = 1; – डिफ़ॉल्ट मान के लिए बृहदान्त्र की आवश्यकता है दोहरे से चयन करें और संख्या;