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

Làm cách nào để thoát tập lệnh trong SQLPlus khi xảy ra lỗi và quay lại lời nhắc SQLPlus mà không ngắt kết nối hoặc thoát SQLPlus?

Tôi đã tìm thấy một ý tưởng thú vị ở đây, khi kết hợp với câu trả lời của spencer7593, sẽ giúp tôi gọi tập lệnh con có chọn lọc, mà tôi có thể chuyển các giá trị đầu ra PL / SQL. Nói một cách thông minh:

VAR continue number;
EXEC :continue := 1;
BEGIN
   SELECT some_bool_test() INTO :continue FROM dual;
END;

SET termout OFF
COLUMN script_name NEW_VALUE v_script_name
SELECT decode(:continue, 1, 'run_stuff.sql', 'skip.sql') script_name FROM dual;
SET termout ON

@&v_script_name :some_other_values

Nơi skip.sql là một tệp văn bản trống.

CẬP NHẬT: Tôi đã chuyển hầu hết điều này vào một RUN.SQL tệp, nơi tôi chuyển vào boolean (0 hoặc 1) dưới dạng &1 , tên tập lệnh để gọi thành công là &2 , và sau đó bất kỳ tham số mong đợi nào khác để chuyển đến tập lệnh được gọi. Do đó, nó sẽ trông giống như thế này:

VAR continue number;
EXEC :continue := 1;
BEGIN
   SELECT some_bool_test() INTO :continue FROM dual;
END;

@run.sql :continue 'run_stuff.sql' :some_other_values


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để bạn biết một chỉ số tốt là gì?

  2. Gặp lỗi ORA - 00907 ở phần sau khi BẬT CẬP NHẬT

  3. Cách loại bỏ phần đệm bên phải cho tên ngày trong Oracle

  4. Cách thực thi một thủ tục được lưu trữ Oracle thông qua liên kết cơ sở dữ liệu

  5. Loại ngày không có thời gian trong Oracle