如何从 Windows 批处理中执行驻留在 Oracle APEX 上的 SQL 脚本
How to execute SQL scripts that reside on Oracle APEX from Windows batch
我在 Oracle APEX 上创建了一个 SQL 脚本。
那SQL会维护和更新,但我们不想更改已经创建的批处理文件。
因此,我想使用在 Oracle APEX 中创建的 SQL 的名称来执行 SQL executable。 (例如,首先从名称中获取 SQL 主体,然后第二次执行那个 SQL。)
是否可以使用 SQLPlus 来实现此目的?
(也许我创建的脚本的信息在 DB 某处的 table 中?)
sql个脚本的SQL可以查询。有一个顶点字典视图 APEX_WORKSPACE_SQL_SCRIPTS
,其中包含脚本名称和实际脚本。
因此,您可以做的是创建一个 pl/sql 过程,该过程获取脚本并使用“立即执行”运行它。通过 windows 中的 sql 脚本调用该 pl/sql 程序。一些注意事项:
- 脚本存储在数据类型为 BLOB 的列中,因此您必须转换为 clob
EXECUTE IMMEDIATE
不会提供您在脚本中看到的正常输出(插入 x 行,创建 table,等等)。如果您想获得类似的输出,您将必须编写自己的代码。
我在 Oracle APEX 上创建了一个 SQL 脚本。 那SQL会维护和更新,但我们不想更改已经创建的批处理文件。
因此,我想使用在 Oracle APEX 中创建的 SQL 的名称来执行 SQL executable。 (例如,首先从名称中获取 SQL 主体,然后第二次执行那个 SQL。) 是否可以使用 SQLPlus 来实现此目的?
(也许我创建的脚本的信息在 DB 某处的 table 中?)
sql个脚本的SQL可以查询。有一个顶点字典视图 APEX_WORKSPACE_SQL_SCRIPTS
,其中包含脚本名称和实际脚本。
因此,您可以做的是创建一个 pl/sql 过程,该过程获取脚本并使用“立即执行”运行它。通过 windows 中的 sql 脚本调用该 pl/sql 程序。一些注意事项:
- 脚本存储在数据类型为 BLOB 的列中,因此您必须转换为 clob
EXECUTE IMMEDIATE
不会提供您在脚本中看到的正常输出(插入 x 行,创建 table,等等)。如果您想获得类似的输出,您将必须编写自己的代码。