如何在SELECT中使用变量?

时间:2014-03-15 16:11:36

标签: sql stored-procedures view db2 global-variables

我使用IBM®DataStudio V4.1.0.1,DB2 v10.5。

这是我的存储过程。

CREATE PROCEDURE test ()
    DYNAMIC RESULT SETS 1
P1: BEGIN
    DECLARE ageInterval INTEGER;

    SELECT (MAX("age")-min("age"))/5
    INTO ageInterval 
    FROM "Schema1"."adult";   


create view "DiscreteTrain" as 
select 
"age"/ageInterval,
"income"
from "Schema1"."train";

END P1

当我部署它时,data studio说 DB2ADMIN.TEST:15:“AGEINTERVAL”在使用它的上下文中无效。 SQLCODE = -206,SQLSTATE = 42703,DRIVER = 3.67.28

我应该如何使用变量?

1 个答案:

答案 0 :(得分:1)

您无法在视图中使用此变量。根据{{​​3}}:

  

全局变量可以在表达式所在的任何上下文中使用   允许。与主变量不同,全局变量可以在a中使用   CREATE VIEW语句。

所以,你有一些选择。您可以使用create variable将变量切换为全局变量。或者,您每次都可以进行计算:

create view "DiscreteTrain" as 
    select  "age"/a.ageInterval as MyAge, "income"
    from "Schema1"."train" cross join
         (SELECT (MAX("age")-min("age"))/5 as ageInterval
          FROM "Schema1"."adult"
         ) a;