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

oracle plsql यदि नहीं मिला तो दोहराना

जब भी कम से कम एक पंक्ति वापस आती है, तो नीचे दिया गया उदाहरण अनलॉक.एसक्यूएल को तुरंत फिर से शुरू कर देगा, जब उस प्रोजेक्ट के लिए कोई लॉक नहीं होगा।

set verify off

accept project prompt ' project : '

define doit = 'H:\Scripts\unlock.sql'
column doit new_value doit noprint
select 'H:\Scripts\empty.sql' as doit, locknr,description,couserid,ciuserid from dgdtw_lockedinfo where     
description = '&project' and ciuserid is null;
start &doit. 

accept lock prompt ' locknumber  : '

update dgdtw_lockedinfo set ciuserid = couserid where locknr = &lock;
update dgdtw_topografie set locknr = '' where locknr = &lock;
update dgdtw_topografie set verval=sysdate where id= &lock;
commit;

accept var prompt 'repeat process?  [Y/N] ? '
define doit = 'H:\Scripts\stop.sql'
column doit new_value doit noprint
set termout off
select 'H:\Scripts\unlock.sql' doit from dual where upper('&var') like 'Y%';
set termout on
start &doit. 

एक सुधार के रूप में मैं दोहराए गए प्रश्न को एक अलग SQL फ़ाइल में ले जाने का सुझाव देता हूं, फिर उस तर्क का उपयोग करके कॉल करें जो यह बताता है कि कौन सी स्क्रिप्ट पुनरारंभ करना है (देखें https://docs.oracle.com/cd/B10501_01/server.920/a90842/ch13.htm#1013716 )

उदाहरण के लिए, 'unlock.sql' से 'repeat.sql' को इस तरह कॉल करें:

start 'repeat.sql' unlock

रिपीट.एसक्यूएल के साथ कुछ इस तरह:

accept var prompt 'repeat &1 process?  [Y/N] ? '
define doit = 'H:\Scripts\stop.sql'
column doit new_value doit noprint
set termout off
select 'H:\Scripts\&1.sql' doit from dual where upper('&var') like 'Y%';
set termout on
start &doit. 



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA 00918- कॉलम अस्पष्ट रूप से परिभाषित त्रुटि

  2. ओआरए 00936 गुम अभिव्यक्ति त्रुटि को कैसे हल करें?

  3. Oracle के साथ WildFly jdbc कनेक्शन

  4. क्या मुझे अपनी तालिका का विभाजन/उपविभाजन करना चाहिए?

  5. Oracle क्वेरी त्रुटि दे रही है