sql >> Database >  >> RDS >> Oracle

SQL ontleden via de JDBC-driver van Oracle

U kunt het Oracle DBMS_SQL-pakket gebruiken om een ​​instructie in een tekenreeks te ontleden. Bijvoorbeeld:

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

Je zou dat kunnen inpakken in een opgeslagen functie die net is teruggekeerd, b.v. 1 als de verklaring geldig was, 0 als ongeldig, als volgt:

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;

Je zou het dan zoiets als dit PL/SQL-voorbeeld kunnen gebruiken:

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



  1. Database testen in python, postgresql

  2. Vertalingen uit een tabel halen door altijd alle talen op te nemen, zelfs als er geen vertaling voor is

  3. MySQL InnoDB Zoeken in volledige tekst met e-mailadres

  4. Hoe maak je een nieuw veld in een tabel wanneer de gebruiker op een link klikt?