使用变量并通过ODBC

时间:2018-07-09 18:56:00

标签: db2 odbc

简而言之,我需要从max date列值中选择结果值,并用year-1替换year部分。

但是,“日期”列为NUMERIC(8,0),其值存储为yyyymmdd。有一个单独的“年份”列-NUMERIC(4,0)-仅存储yyyy值。 (仅供参考-我没有创建此表,但必须按原样使用它)

在不使用变量和逻辑的情况下,我可以手动创建一个选择语句,该语句在知道当前年份为2018年的情况下产生期望的结果,例如:

 SELECT REPLACE( MAX(MYDATE), 2018, 2017 ) FROM MYTABLE

我需要动态提供2018(最大年份)和2017(最大年份-1)参数的值。

这是我到目前为止所拥有的:

BEGIN
DECLARE VOUT CHAR;
DECLARE VYEAR CHAR;
SELECT MAX(MYYEAR) INTO VYEAR FROM MYTABLE;
SELECT REPLACE( MAX(MYDATE), @VYEAR, @VYEAR-1 ) INTO VOUT FROM MYTABLE;
END

我遇到以下错误:

 [IBM][System i Access ODBC Driver][DB2 for i5/OS]SQL0206 - Column or global variable @VYEAR not found.

如果我删除@VYEAR和@ VYEAR-1变量并硬编码2018、2017值,则语句块将正常运行。

此外,我也不知道如何检索VOUT变量值。我该如何从执行此操作的客户端获取该值?

我发现的唯一东西是这样的:

SET SERVEROUTPUT ON;
BEGIN
  dbms_output.put_line( 'Hello' );
END;

但是我得到这个错误:

 [IBM][System i Access ODBC Driver][DB2 for i5/OS]SQL0199 - Keyword ON not expected.

0 个答案:

没有答案