Philipp Salvisberg

@salvis.com

Focused on database-centric development. Chat is open. https://www.salvis.com/blog/about

You can use assertions in Oracle AI Database to enforce temporal data integrity @salvis.com shows how to use these to: Prohibit overlapping periods Define temporal foreign keys => the parent row must be valid while the child is valid

Using SQL Assertions to Enforce Temporal Data Integrity - Philipp Salvisberg's Blog

Learn how SQL assertions enforce temporal integrity in Oracle AI Database by preventing overlaps and detecting gaps in temporal relationships.

buff.ly

Oracle provides an APEXlang compiler, but not a public parser for building custom tooling. Grisselbav’s APEXlang Parser fills that gap. In this blog post, I show how it enables static code analysis by detecting a security vulnerability in an Oracle APEX app. www.salvis.com/blog/2026/06...

Detecting Security Vulnerabilities With the APEXlang Parser

Introduction A parser for the APEXlang grammar enables the development of tools beyond the scope of the APEXlang compiler included in SQLcl, SQL Developer for VS Code, and ORDS. These tools can perfor...

salvis.com

Making progress with APEXlang support. The ANTLR4-based grammar can now parse the dbLinter APEX app without errors. Next step: more tests and integration into dbLinter’s language server.

IntelliJ IDEA showing development of an ANTLR4-based parser for APEXlang. The editor contains an APEXlang page definition, an ANTLR Preview window displays the corresponding parse tree, and the test runner shows 96 passing tests, including successful parsing of dbLinter APEX application files.

New PWOW webinar on Unit Testing & code REUSE is coming! To celebrate, we have a special treat: an exclusive interview with Jacek Gębal, the driving force behind modern utPLSQL (originally founded by Steven Feuerstein). Trade "hope-it-works" for automation! 👇 how2ora-en.blogspot.com/2026/05/who-...

Who Shook Up the World of PL/SQL Testing? A Conversation with Jacek Gębal

A new PWOW webinar is approaching, focusing on a topic often—unfairly—neglected: Unit Testing . 🧪 The key to success isn't just wri...

how2ora-en.blogspot.com

Loops in hierarchical data are a pain Easy to add Hard to prevent @salvis.com shows Oracle AI Database 23.26.1 gives a simple solution Create an assertion limiting the maximum depth to N Do this by joining the hierarchy N+1 times in the assertion

Enforcing Acyclic Hierarchies With SQL Assertions - Philipp Salvisberg's Blog

Explore SQL Assertions in Oracle AI Database and learn how to enforce hierarchy integrity by detecting cycles with declarative constraints.

buff.ly

How do you enforce temporal data integrity? With SQL Assertions in Oracle AI Database, we can now implement constraints such as: ✅ Non-overlapping validity periods ✅ Temporal referential integrity Here's a practical example using an extended DEPT-EMP model. www.salvis.com/blog/2026/03...

Using SQL Assertions to Enforce Temporal Data Integrity

Introduction More than twelve years ago, I described the multi-temporal features of Oracle Database in this blog post. In the conclusion, I wrote that I missed a temporal DML API, temporal integrity c...

salvis.com