【问题标题】:How to execute "Stored Procedure" Query in node-oracledb if we are not aware of stored procedure bind parameters?如果我们不知道存储过程绑定参数,如何在 node-oracledb 中执行“存储过程”查询?
【发布时间】:2016-06-30 18:19:01
【问题描述】:

文档中的所有示例都给出了绑定变量。但是如果我们要执行用户编写的查询(存储过程)。(在这种情况下,我们不会知道所有的要绑定的输入和输出参数)。 我能够执行所有基本的 ddl 和 dml 查询。但是如何执行像查询这样的存储过程以及检索的方式是什么?

如果我们使用“db-oracle”会有运气吗?

注意:我是 nodejs 和 node-oracle-db 的新手

【问题讨论】:

    标签: node.js oracle stored-procedures node-oracledb


    【解决方案1】:

    看看下面的例子:

    https://github.com/oracle/node-oracledb/blob/master/examples/plsqlfunc.js https://github.com/oracle/node-oracledb/blob/master/examples/plsqlproc.js

    另外,我不明白您为什么不知道要绑定的输入和输出参数。这必须是一个非常动态的情况才能做到这一点。这类似于说:我们不知道我们需要查询的表的列名。我并不是说这不会发生,也不是说在不寻常的情况下这可能是一个问题,只是说它非常不寻常。

    在任何一种情况下,无论您是否不知道存储过程的输入和输出,或者即使您不知道列的名称,这都是数据字典视图的用武之地。尝试运行以下查询以开始探索可能与您相关的观点:

    办理手续:

    select *
    from all_procedures;
    

    对于参数:

    select *
    from all_arguments;
    

    【讨论】:

    • 我不知道某种意义上的参数,我正在尝试开发像 oracle sql 开发工具这样的 Web 应用程序。所以无论用户写什么,我只需要执行它。在这种情况下,我怎么知道参数?我需要在后端解析查询吗??
    • 我想我开始理解你的问题了......你不需要知道参数。用户正在编写它,他们将了解参数。您只需要为他们提供一种指定参数的方法。我认为您的难题中缺少的部分是 DBMS_SQL。这是执行动态代码所需的 PL/SQL 包。
    • 如果你有我的问题,你能不能给我一个例子来理解。所以我会试试。我实际上也是 Oracle 的新手。
    • 我能够使用 node-oracle-db 执行基本的 ddl 和 dml 查询。但是对于像程序函数这样的 pl-sql 查询,似乎:要退出,我需要绑定参数和类型。但是,当我们执行用户所写的查询时,这怎么可能呢。我需要解析查询以查找过程名称和参数吗?我想应该是吧?
    • 我认为您需要设计系统,以便提供代码的用户也提供绑定(名称、类型等)。
    猜你喜欢
    • 2019-04-28
    • 1970-01-01
    • 2012-11-01
    • 2019-01-13
    • 2021-07-17
    • 2010-09-15
    • 2013-01-08
    • 2020-04-04
    • 2012-12-26
    相关资源
    最近更新 更多