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

làm cách nào để tập lệnh sql của tôi có thể xác định xem nó đang chạy trong sqldeveloper hay sqlplus?

Tôi không quen thuộc với lỗi định tuyến của Nhà phát triển SQL, vì vậy không chắc kết quả cuối cùng phải như thế nào. Nhưng bạn có thể sử dụng sys_context cho điều này:

select sys_context('USERENV', 'MODULE') from dual;

Điều này mang lại:

SYS_CONTEXT('USERENV','MODULE')
--------------------------------------------------------------------------------
SQL*Plus

... hoặc:

SYS_CONTEXT('USERENV','MODULE')                                           
-------------------------------
SQL Developer 

Vì vậy, bạn có thể điều chỉnh những gì bạn có như:

column set_the_line new_value targetlinesize noprint
set termout off
select case sys_context('USERENV', 'MODULE')
    when 'SQL Developer' then 5 else 500 end as set_the_line from dual;
set termout on
set linesize &&targetlinesize

Và sau đó kiểm tra với

show linesize

cung cấp cho linesize 500 trong SQL * Plus và linesize 5 trong SQL Developer.

Nếu bạn có thể chưa được kết nối trong SQL * Plus, chỉ cần xác định giá trị trước; bạn thậm chí không cần phải làm bất cứ điều gì đặc biệt để ẩn lỗi khỏi select vượt ra ngoài set termout off , mặc dù bạn có thể bao gồm whenever sqlerror chỉ trong trường hợp login.sql của bạn đang đặt nó để thoát - nhưng sau đó bạn có thể phải biết để đặt lại nó.

define targetlinesize=500
whenever sqlerror continue
set termout off
column set_the_line new_value targetlinesize noprint
select case sys_context('USERENV', 'MODULE')
    when 'SQL Developer' then 5 else 500 end as set_the_line from dual;
set termout on
set linesize &&targetlinesize
show linesize

Cột column giá trị sẽ ghi đè nó nếu lựa chọn thành công và không chạm vào nó nếu nó không thành công. Nếu tôi đặt nó vào một tệp có tên là client.sql và chạy nó dưới dạng:

sqlplus -s /nolog @client

Tôi chỉ nhận được kết quả này:

linesize 500

Và điều tương tự cũng chạy trong SQL Developer, đưa ra linesize 5 một lần nữa.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tiếp theo Q:So sánh các hàng trong bảng Oracle và cập nhật các hàng phù hợp

  2. Kích hoạt cập nhật lỗi clob

  3. 12c Các tính năng không được dùng nữa

  4. Lỗi cơ sở dữ liệu Oracle trong symfony2 (theory). Tham số.yml có được thiết lập chính xác không?

  5. sử dụng trình kích hoạt để đảm bảo tính nhất quán của dữ liệu