構文規則は、言語要素を並べて正しい文を作成する基準を示します。つまり、構文検査はキーワード、オブジェクト名、演算子、デリミタなどがSQL文に正しく配置されていることを検証します。たとえば、次の埋込みSQL文には構文上のエラーがあります。
-- misspelled keyword WHERE EXEC SQL DELETE FROM EMP WERE DEPTNO = 20; -- missing parentheses around column names COMM and SAL EXEC SQL INSERT INTO EMP COMM, SAL VALUES (NULL, 1500);
意味上の規則は、有効な外部参照を行う方法を示しています。つまり、意味検査では、データベース・オブジェクトおよびホスト変数への参照が正しいこととホスト変数のデータ型が正しいことを検証します。たとえば、次の埋込みSQL文にはセマンティック・エラーがあります。
-- nonexistent table, EMPP EXEC SQL DELETE FROM EMPP WHERE DEPTNO = 20; -- undeclared host variable, emp_name EXEC SQL SELECT * FROM EMP WHERE ENAME = :emp_name;
SQL構文および意味の規則の定義は、『Oracle Database SQL言語リファレンス』を参照してください。