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

Phân tích cú pháp SQL thông qua trình điều khiển JDBC của Oracle

Bạn có thể sử dụng gói Oracle DBMS_SQL để phân tích cú pháp một câu lệnh được tổ chức trong một chuỗi. Ví dụ:

SQL> declare
  2    c integer;
  3    l_statement varchar2(4000) := 'insert into mytable (col) values (1,2)';
  4  begin
  5    c := dbms_sql.open_cursor;
  6    dbms_sql.parse(c,l_statement,dbms_sql.native);
  7    dbms_sql.close_cursor(c);
  8  end;
  9  /
declare
*
ERROR at line 1:
ORA-00913: too many values
ORA-06512: at "SYS.DBMS_SYS_SQL", line 824
ORA-06512: at "SYS.DBMS_SQL", line 32
ORA-06512: at line 6

Bạn có thể gói nó vào một hàm được lưu trữ vừa trả về, ví dụ:1 nếu câu lệnh hợp lệ, 0 nếu không hợp lệ, như thế này:

function sql_is_valid
  ( p_statement varchar2
  ) return integer
is  
  c integer;
begin
  c := dbms_sql.open_cursor;
  dbms_sql.parse(c,p_statement,dbms_sql.native);
  dbms_sql.close_cursor(c);
  return 1;
exception
  when others then 
    return 0;
end;

Sau đó, bạn có thể sử dụng nó giống như ví dụ PL / SQL này:

:n := sql_is_valid('insert into mytable (col) values (1,2)');



  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ách chuyển PK mới sang proc được lưu trữ trong Oracle Apex

  2. Sự cố khi triển khai cuộc chiến máy chủ bảng điều khiển JBPM 5.4 trên máy chủ ứng dụng Websphere với gói tính năng JPA2 để sử dụng cơ sở dữ liệu oracle

  3. Khôi phục thay đổi cơ sở dữ liệu bằng cách sử dụng các điểm lưu không xác định? - Oracle

  4. SSIS không thể lưu các gói và khởi động lại Visual Studio

  5. Thay thế một phần của trường bằng các giá trị từ truy vấn