2012-05-07 9 views
8

मैं एक छोटी विंडोज कमांड स्क्रिप्ट को नियंत्रित करने के लिए एसक्यूएल * प्लस का उपयोग करने की कोशिश कर रहा हूं।प्रवाह को नियंत्रित करने के लिए विंडोज कमांड स्क्रिप्ट में एसक्यूएल * प्लस का उपयोग कैसे करें?

असल में, मैं कुछ पीएल/एसक्यूएल (शायद एक दृश्य या तालिका से चयन करें या फ़ंक्शन निष्पादित करें) निष्पादित करना चाहता हूं जो मुझे डेटाबेस में कुछ पंक्तियों की स्थिति दिखाता है, और फिर पंक्तियों की स्थिति के आधार पर प्रदर्शन करता है कुछ विंडोज आदेश।

मेरी समस्या यह है कि परिणामों को कमांड स्क्रिप्ट में कैसे प्राप्त करें।

sqlplus user/[email protected] @script.sql 

IF <CONDITIONAL HERE BASED on script.sql results> GOTO :runprocess 

REM log and email that process had to be skipped 
EXIT 

:runprocess 
REM run various Windows service commands 

उत्तर

5

यह है कि मैं क्या का उपयोग कर समाप्त हो गया है।

मेरे .cmd स्क्रिप्ट:

@ECHO OFF 
ECHO Checking Oracle... 

for /f %%i in ('sqlplus -s user/[email protected] @script.sql') do @set count=%%i 
echo %count% 

IF %count% GTR 0 GOTO :skipped 
GOTO :runprocess 

कहाँ script.sql:

SELECT COUNT(*) 
FROM table 
WHERE criteria = 1; 

exit 
2

मैं ऐसा कुछ करता हूं जो एक .bat फ़ाइल बनाकर करता है जो विंडोज़ सामान करता है और एसक्यूएल स्क्रिप्ट को आवश्यकतानुसार कॉल करता है। अपने परिणामों को एक टेक्स्ट फ़ाइल में स्पूल करने के लिए SQL का उपयोग करें जिसे आप पढ़ सकते हैं।

... डॉस यहाँ आदेशों

sqlplus/nolog @C: \ डंप \ DropRecreateUsers.sql

sqlplus/nolog @C: \ \ Cleanup.sql

डंप .. .dos आदेश

एसक्यूएल प्रयोग में इस आदेश को स्पूल C: \ yourResults.txt या अधिक परिष्कृत उपयोगों के लिए एक प्रक्रिया है, जो है, जब कहा जाता है, एक पाठ के लिए परिणाम लिखते बनाने UTL_FILE

3

का उपयोग कर फ़ाइल मैं आपको का उपयोग करने के लिए दृढ़ता से प्रोत्साहित करता हूं .bat फ़ाइलें। आपके पास कई अन्य विकल्प हैं: सी/सी ++ या वीबी, Windows scripting या Powershell, या यहां तक ​​कि Perl या Bash जैसे निःशुल्क डाउनलोड भी हैं। लिंक मैं ऊपर दे दी है में से कुछ पर

लेकिन कृपया देखो:

लेकिन यहाँ .bat फ़ाइलों में त्रुटि कोड लौटने का एक उदाहरण है। .bat फ़ाइलों से बचने से आपके लिए यह आसान हो जाएगा, और भविष्य में इसे बनाए रखना आसान हो जाएगा।

IMHO ...

1

मैं बैकअप के लिए Oracle XE में शामिल दो स्क्रिप्ट पर एक नज़र डालें और बहाल करने के लिए प्रोत्साहित करते हैं। इन स्क्रिप्ट्स ने मुझे विंडोज प्लेटफार्म पर बैच-स्क्रिप्टिंग और ओरेकल को संभालने के लिए बहुत कुछ सिखाया है।

  • C: \ oraclexe \ एप्लिकेशन \ ओरेकल उत्पाद \ \ 11.2.0 \ सर्वर \ बिन \ Backup.bat
  • C: \ oraclexe \ एप्लिकेशन \ ओरेकल \ उत्पाद \ 11.2.0 \ सर्वर \ बिन \ Restore.bat
7

मैं शायद script.sql नामक स्क्रिप्ट (या शर्त के आधार पर सशर्त) लिखूंगा।

उदाहरण के लिए, निम्नलिखित script.sqlबनाता है।बल्ला फ़ाइलwindows_commands.bat:

set feedback off 
set echo off 
set trimspool on 
set termout off 
set serveroutput on size 100000 format wrapped 
set lines 500 
set pages 0 

-- create the bat file to be executed later: 
spool windows_commands.bat 

declare 
    c number; 
begin 

    select count(*) into c from dual; 

    -- depending on a conditional, write the stuff to be executed into the 
    -- bat file (windows_commands.bat) 
    if c = 1 then 
    dbms_output.put_line('@echo everthing ok with dual'); 
    else 
    dbms_output.put_line('@echo something terribly wrong with dual'); 
    end if; 

end; 
/

spool off 

exit 

फिर आप अभी तक एक और .bat फ़ाइल से script.sql कॉल कर सकते हैं तो जैसे:

@rem create oracle session, call script.sql 
sqlplus %user%/%password%@%db% @script.sql 

@rem script.sql has created windows_commands.bat. 
@rem call this newly created bat file: 
call windows_commands.bat 
0

से कनेक्ट किया गया: Oracle डाटाबेस 11g एंटरप्राइज़ संस्करण रिलीज 11.2.0.1.0 - 64 बिट उत्पादन विभाजन के साथ , ओलाप, डेटा खनन और वास्तविक अनुप्रयोग परीक्षण विकल्प

SQL> @f:\testa.txt 
संबंधित मुद्दे