在 Oracle APEX PL/SQL 中传递变量

Posted

技术标签:

【中文标题】在 Oracle APEX PL/SQL 中传递变量【英文标题】:Passing a variable in Oracle APEX PL/SQL 【发布时间】:2011-11-16 19:43:25 【问题描述】:

我正在 APEX 中构建一个简单的应用程序。我的一个页面是一份报告,对于区域源,我有一些代码来实现这一点。我收到的错误消息是

ORA-00904: "var_out": invalid identifier

本质上,变量 :form_variable 来自搜索框,我可以将其传递到查询字符串中(即将“变量”替换为“:form_variable”,但我想先将其传递给函数并将其放入)而是输出到字符串中。我确信这很简单,但对于我的生活,我无法弄清楚该怎么做。

DECLARE
variable VARCHAR2(10);
query VARCHAR2(1000);

-- Where var_out is an output
BEGIN
myfunction(:form_variable, var_out);
variable := var_out;

query := 'SELECT * FROM TABLE WHERE column = variable';

RETURN query;

END;

谢谢

【问题讨论】:

【参考方案1】:

您需要在声明块中声明您的输出变量var_out

    DECLARE
    var_out VARCHAR2(10);
    query VARCHAR2(1000);

    -- Where var_out is an output
    BEGIN
    myfunction(:form_variable, var_out);
    --variable := var_out;

    query := 'SELECT * FROM TABLE WHERE column = '''||var_out||'''';

    RETURN query;

    END;

此外,您的查询字符串在您的示例中没有做任何替换。如果您的过程 myfunction 输出清除了变量,则可以将其连接起来。

【讨论】:

不需要为 out 参数声明 2 个变量。只需传递变量或 var_out 就足够了。此外,在将变量连接到查询时,请记住 varchars 必须在引号之间! -> 列 = '''||变量||'''';只是提醒:) @Tom 很好地抓住了串联,修复了这个问题。确实,不需要额外的变量。 谢谢,这不是我问题的全部,但解决了我在使用这段代码时遇到的问题。我发现我只需要围绕连接的 2 个撇号,而不是 3 个。我的其余问题在于 APEX 不喜欢我在不使用 if else 语句来检查它是否已设置的情况下引用绑定变量。

以上是关于在 Oracle APEX PL/SQL 中传递变量的主要内容,如果未能解决你的问题,请参考以下文章

在 oracle apex 中将 sql 查询重写为 pl/sql

ORACLE apex - 使用 PL/SQL 循环通过复选框项目

ORACLE APEX PL SQL 过程错误

Oracle ApeX (PL/SQL) - 从 JavaScript 变量中创建绑定变量

PL/SQL 中的问题 = 错误堆栈:ORA-01403:Oracle Application Express (APEX) 中没有数据

运行时解析 PL/SQL 的 Oracle Apex Cards 视图