Oracle 变量作为选择

Posted

技术标签:

【中文标题】Oracle 变量作为选择【英文标题】:Oracle Variable as select 【发布时间】:2016-05-11 06:46:05 【问题描述】:

我必须在我的项目中调用 oracle SQL 语句。

所有连接相关的东西都完成了,但是我的工具没有捕获oracle执行的输出参数。

因此我需要更改此查询以在 select 语句中返回 p_num 值。

即该表有 1 列 ('p_num'),列名为 'Result',并且只有一行 p_num 值。

以下是当前在dbms_output.put_line的帮助下给出输出值的sql语句

DECLARE
p_num varchar2(4000);
message varchar2(4000) ; 
BEGIN
p_num := MyFunction();

dbms_output.put_line('Message : ' || p_num) ;
    END;

我想要的是 SELECT 语句中的 p_num 值,以便我可以在我的 bpm 工具中捕获特定列。

【问题讨论】:

哪个 SELECT 语句?您的问题中没有选择语句 我希望 p_num 的值应该在结果集中,以便我的 bpm 工具捕获输出结果值,我想要从 temp_table 中选择 p_num 之类的东西 哪个结果?向我们展示您要更改的查询 不确定,但您可能正在寻找这个:- ***.com/questions/5127482/… 在上面的 sql 语句中我在 p_num 中有值,我希望它是选择语句表结果的形式 【参考方案1】:

您可以在SELECT语句中直接调用该函数。

1) 第一种方法是通过纯 SQL 来实现

SELECT MyFunction FROM DUAL;

2) 第二种方式是 PLSQL,但除非不可避免,否则我不会推荐它

set serveroutput on;
declare
lv_var VARCHAR2(100);
lv_out_param VARCHAR2(100);
BEGIN
lv_var:=MyFunction(lv_out_param);
dbms_output.put_line(lv_var||' '||lv_out_param);
END;
/

【讨论】:

我是 oracle 新手,请问这是 DUAL,关键字吗?当我从 DUAL 执行 select Myfunction('APPR') 时,它显示 ORA-06550:第 9 行,第 5 列:PLS-00428:此 SELECT 语句中应有一个 INTO 子句 DUAL 是一个单行单列的内置表。当您只想评估一个表达式并且对表数据并不真正感兴趣时使用它。 关于 PLS-00428:不要使用 PL/SQL,即删除 DECLARE、BEGIN、END 并只执行 SELECT 语句而无需其他任何内容。 @user3815413 :我已经添加了两种实现解决方案的方法。让我知道这是否有帮助。上面解释的 DUAL 是 ORACLE 提供的一个虚拟表。 非常感谢 Avrajit,非常感谢您的快速回复现在它说,Function MyFunction 没有参数,我如何在没有声明的情况下传递参数?

以上是关于Oracle 变量作为选择的主要内容,如果未能解决你的问题,请参考以下文章

将外部选择行变量传递给oracle中的内部选择

变量作为 Oracle PL/SQL 中 where 子句中的列名

oracle中的变量和多个选择语句

Oracle 声明变量并在另一个选择查询中使用它

在 Python 中为 Oracle 选择查询绑定变量

从 Oracle 表变量/数组中选择值?