gpt4 book ai didi

oracle - 执行前在 Oracle 中测试 native 动态 SQL

转载 作者:行者123 更新时间:2023-12-01 15:34:33 26 4
gpt4 key购买 nike

我在我的应用程序中实现了一个特定的功能,用户可以通过按下按钮并在各处插入一些值来从用户界面动态地编写查询。

用户根本看不到生成的SQL语句。

我想知道是否有一种方法可以检查动态生成的 SQL 的句法和文法(例如,他打开了一个括号“(”并忘记关闭它),以确保没有< strong>运行时编译错误会在使用 EXECUTE IMMEDIATE 实际执行语句之前发生。

最佳答案

您可以使用 dbms_sql.parse procedure假设语句是 DML 而不是 DDL 来解析 SQL 语句。使用 dbms_sql 包解析动态 SQL 语句然后使用 EXECUTE IMMEDIATE 执行它而不是使用 dbms_sql.execute 是相当不寻常的但没有什么能阻止您混合使用 dbms_sqlexecute immediate

解析SQL语句的代码应该是这样的

DECLARE
l_cursor integer;
l_sql_stmt varchar2(1000) := <<some SQL statement>>;
BEGIN
l_cursor := dbms_sql.open_cursor;
dbms_sql.parse( l_cursor, l_sql_stmt, dbms_sql.native );
dbms_sql.close_cursor( l_cursor );
END;

关于oracle - 执行前在 Oracle 中测试 native 动态 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24848751/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com