Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

oracle plsql nếu không tìm thấy lặp lại

Ví dụ dưới đây sẽ ngay lập tức khởi động lại unlock.sql khi không có khóa nào cho dự án đó, bằng cách xác định lại lệnh gọi unlock.sql dưới dạng lệnh gọi đến void.sql bất cứ khi nào trả về ít nhất một hàng.

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. 

Để cải thiện, tôi khuyên bạn nên chuyển câu hỏi lặp lại vào một tệp SQL riêng biệt, sau đó gọi câu hỏi đó bằng cách sử dụng một đối số cho biết tập lệnh nào sẽ khởi động lại (xem https://docs.oracle.com/cd/B10501_01/server.920/a90842/ch13.htm#1013716 )

Ví dụ:từ 'unlock.sql' hãy gọi 'repeat.sql' như thế này:

Mở khóa
start 'repeat.sql' unlock

với repeat.sql như sau:

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. Cập nhật Bảng Oracle từ Excel VBA Macro bằng cách sử dụng kết nối ODBC

  2. Oracle SQL Hours Sự khác biệt giữa các ngày trong HH:MM:SS

  3. Hàm ABS () trong Oracle

  4. Sử dụng truy vấn SQL để xác định xem một bảng có tồn tại hay không

  5. Làm thế nào để kết nối trong java dưới dạng SYS với Oracle?