在 SQL 之上定义用户定义语言

Defining a User Defined Language on top of SQL

好的,所以我们的基本想法是在 SQL 之上构建一种语言。我们的主要目标是预处理包含 SQL 和不同内容的字符串,解析我们的 "invented" 语言,在另一端生成 SQL 并最终执行 SQL 字符串.

它类似于 ASP/PHP 对 HTML 所做的事情(我知道这在语义上是不正确的,我只是在寻找语法部分)

我们已经有了一个非常有用的解析器,但是随着查询变得越来越长,我们不断向 "language" 添加新功能,如果我有 Notepad++,我会很高兴正确突出我的语法。

代码示例:

WHERE PARENT_ID = {GETVAR|PARENT_ID**'}

这实际上是获取名为 PARENT_ID 的变量,并将其填充到由两个 '.看起来像

WHERE PARENT_ID = 'a parent'

我一直纠结的是那个单引号,它是不匹配的,不应该被识别为 SQL 字符串,因为它在我们的 "function" 中。如果在 { 和 } 中,如何正确地告诉记事本 ++ 避免使用此类单引号?

非常感谢。

您可以通过从 PL-SQL 示例开始并添加您的扩展来创建用户定义的语言。它不像内部解析器那么强大,但它可以让你:

  1. 添加 ' 作为新关键字,例如,
  2. 运算符添加*,
  3. 并创建一个新的分隔符 {},允许运算符和其中的新关键字。

这将排除 '...' 分隔符并允许使用 ' 关键字,这正是您想要的。

注意 关键字需要分隔,如果 * 是一个运算符(因此用作分隔符),' 将只是一个关键字。此外,您可能需要编写 \' 而不仅仅是 '