在db2中声明变量mysql

问题描述:

BEGIN 
DECLARE @STDATE DATE DEFAULT '2015-08-19'; 
DECLARE @ENDATE DATE DEFAULT '2016-08-19'; 
SELECT * FROM MYTABLE 
WHERE DATE BETWEEN @STDATE AND @ENDATE 
END 

我试图在sql上执行对db2的查询,以允许检索数据并计算一段时间内的结果(由Start Date和End Date定义)。开始日期和结束日期应该变成变量或参数。在db2中声明变量mysql

当我试图执行该语句的意外标记

declare @stdate is thrown also tried using 
create variable sdate char(10) DEFAULT '2015-08-19'; 
create variable edate char(10)DEFAULT '2016-08-19'; 
SELECT * FROM MYTABLE 
WHERE DATE BETWEEN @SDATE AND @EDATE 
END 

错误我根据戈登的建议所做的更改我执行的查询

BEGIN DECLARE v_stdate日期; DECLARE v_endate date; SET v_date = date('2016-01-01'); SET v_endate = date('2016-04-03'); SELECT * FROM MYTABLE WHERE日之间v_stdate和v_endate END 意外标记的错误被删除 但后来我得到另一个错误 [在这里输入的形象描述] [它说意外“作为”]然后我评论的行 其抛出另一个SQL错误说“从”意外的错误,在选择*从我的表

请帮助

+0

您应该打印出实际的错误 –

+0

这不会按照您期望的方式工作 - 在复合SQL中,您必须使用“SELECT ... INTO”或声明并打开游标;一个简单的'SELECT'语句不能在那里使用。 – mustaccio

可能性,如果你是在iSeries(AS400岁)是

--creation des variables 
CREATE OR REPLACE VARIABLE yourlib.sdate date DEFAULT '2015-08-19'; 
CREATE OR REPLACE VARIABLE yourlib.edate date DEFAULT '2016-08-19'; 

-- your query with variables used 
SELECT * FROM yourlib.yourtable 
WHERE yourdate BETWEEN yourlib.sdate AND yourlib.edate; 

-- free variable 
drop VARIABLE yourlib.sdate ; 
drop VARIABLE yourlib.edate ; 

最好在qtemp库中创建您的变量,除非您希望将这些变量保持为其他脚本的全局变量。