5

街上的消息是 Perl 不是由规范定义的,而是由当前解释器版本碰巧接受的任何东西定义的。现在,让我们考虑像 TSQL 这样的 SQL 方言。是否有已发布的规范允许使验证器等效于 SQL Server 内部的验证器?是否已经存在这样的开源验证器?甲骨文也有同样的问题。

好的,所以对于 MySQL,我猜验证器可以直接从 MySQL 代码库中提取。尽管如此,如果我想制作自己的验证器,他们是否实际上会发布规范本身?

4

1 回答 1

1

您似乎知道如何为 MySQL 做些什么。除了 Oracle 主要实现 ANSI SQL 和 SQL 的 PL/SQL 过程语言扩展之外,我真的不能说太多关于Oracle 9i 的信息。

对于 SQL Server:

Microsoft Books On Line (BOL) 是官方参考规范。但是,不同版本的 SQL Server 有不同的页面。有一些与此相关的项目。 http://www.sqlparser.com/ - 这有适用于 Oracle、DB2、Mysql 和 SQL Server / Sybase (T-SQL) 的 .NET、Java、COM 和 VCL 版本。价格也相当合理。

http://www.codeproject.com/Articles/1136/SharpHSQL-An-SQL-engine-written-in-C (c#)

http://antlr.org/ - 这看起来是个不错的选择。

我经常使用这个网站来格式化 SQL,但它也做了一些验证,虽然它相当粗糙: http ://www.dpriver.com/pp/sqlformat.htm

这是一个类似的网站: http ://www.tsqltidy.com/

我建议为 SQL 编写一个验证器,即使只是其中一个变体也是一项艰巨的任务。您可以查看 ANSI SQL 的各种 ISO/IEC 标准。ANSI SQL-92 被广泛实施,但也有一个 SQL:2008 标准。但是,您必须为这些标准的文档付费,而且它们并不便宜。

祝你好运。

于 2012-06-25T04:42:56.657 回答