如何从存储过程调用中选择或显示out变量?

时间:2016-10-08 11:04:55

标签: sql db2

我正在编写一个非常基本的存储过程,它只从示例DB2数据库中获取值并计算标准偏差。我写的程序本身很好,我可以毫无错误地调用它。但我无法弄清楚如何实际显示我的结果或在声明中选择它。我尝试的所有内容都会导致语法错误,我无法在Google搜索中找到执行此特定任务的任何人。

这是我的代码的要点(为简洁起见):

CREATE PROCEDURE SAL_STD_DEV
  (OUT std_dev real)
  LANGUAGE SQL
  BEGIN
    --do stuff
    SET std_dev = 10; --changed for simplicity
  END@

CALL SAL_STD_DEV(?)@

所有这些都运行,但只是CALL不会创建任何输出。 SELECT out out变量的语法是什么?我不能在CALL之前放置DECLARE,因为它不在存储过程中,并且PRINT也不起作用。

(@是我的终端角色,因为我正在使用;在存储过程中)

编辑:创建过程和调用语句都在同一个SQL文件中生成,数据库通过localhost连接,我使用DB2 11.1.0.1527并在IBM Data Studio 4.1中进行开发0.2。

1 个答案:

答案 0 :(得分:1)

从进行CALL的任何地方开始,该功能可能会显示结果集,尽管显然没有显示OUT参数的结果。如果是这样,则可以修改存储过程以将OUT值[替代地或另外地]作为结果集返回,以便接受CALL语句作为输入的接口可以呈现该结果集。无论:

在声明处理器中[例如这不是一个GUI,但是对于哪个SELECT查询输出,下面的脚本请求应该足够了:

create variable my_real real
;
call SAL_STD_DEV(my_real)
;
select my_real from sysibm.sysdummy1
;