Oracle
 sql >> Baza danych >  >> RDS >> Oracle

oracle plsql, jeśli nie znaleziono, powtórz

Poniższy przykład natychmiast zrestartuje unlock.sql, gdy nie ma żadnych blokad dla tego projektu, poprzez przedefiniowanie wywołania unlock.sql jako wywołanie empty.sql za każdym razem, gdy zostanie zwrócony co najmniej jeden wiersz.

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. 

Jako ulepszenie sugeruję przeniesienie powtarzającego się pytania do osobnego pliku SQL, a następnie wywołanie go za pomocą argumentu, który mówi mu, który skrypt ma zostać zrestartowany (patrz https://docs.oracle.com/cd/B10501_01/server.920/a90842/ch13.htm#1013716 )

Na przykład z „unlock.sql” wywołaj „repeat.sql” w ten sposób:

start 'repeat.sql' unlock

z repeat.sql jako coś takiego:

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. jak wybrać tylko wiersz z sekwencją max bez użycia podzapytania?

  2. Funkcja CHARTOROWID() w Oracle

  3. Jak pozyskać pracowników ze swoimi menedżerami

  4. Jak wywołać procedurę składowaną Oracle w Pythonie?

  5. Jednostki stylu zmiennych tabel w Oracle