但是,“日期”列为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.