通过Web界面在Java中执行动态sql和pl/sql

发布于 2024-08-21 16:21:37 字数 283 浏览 2 评论 0原文

目前我正在为基于 Web 的应用程序制作 SQL 命令行界面。它的行为应该大致类似于 sqlPlus。 我遇到了如何执行sql的问题。它们可以是 SQL 和/或 PL/SQL。

第一种方式我认为我可以将它们分开(通过“;”或“;/”)并单独检测它是否是sql select或delete/update/insert或pl/sql。

现在我找不到 PL/SQL Backus–Naur Form 来制作正则表达式。可能有更简单的方法吗?

一般来说,做出这样的逻辑的最佳方法是什么?

TIA

Currently I'm making sort of SQL command line interface for web-based application. It should act roughly like sqlPlus.
I have encountered a problem how to execute sql's. They can be both as SQL and/or PL/SQL.

First way I thought that I can split them (by ';' or ';/') and detect separately if it's sql select or delete/update/insert or pl/sql.

Now I cant find for PL/SQL Backus–Naur Form to make regexp. May be there exists easier way?

Generally, What is the best way to make such logic ?

TIA

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

百思不得你姐 2024-08-28 16:21:37

我认为最好的方法是使用 ANTLR 它有一个 ANTLR 。 antlr.org/grammar/1209225566284/PLSQL3.g" rel="nofollow noreferrer">PLSQL 语法。您可以生成 Java 和其他语言的代码。

I think the best way is to use ANTLR which have a PLSQL grammar. You can generate code for java and other languages.

青柠芒果 2024-08-28 16:21:37

在sql脚本中使用regexp来分离SQL语句和PLSQL几乎是不可能的。

declare
begin
select sysdate from dual;

dbms.output('hello');
end;
/

您知道如何使用正则表达式识别如此简单的 PLSQL 代码吗? SQL 解析器 是实现此目的所需要的,这里是 一篇可能有帮助的文章

Use regexp to separate SQL statement and PLSQL in a sql script is almost impossible.

declare
begin
select sysdate from dual;

dbms.output('hello');
end;
/

Do you have any ideas how to recognize such a simple PLSQL code using regexp. A SQL Parser is what you need to achieve this, here is an article that may helpful.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文