2016-11-20 112 views
0
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

回答

0

可能性,如果你是在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庫中創建您的變量,除非您希望將這些變量保持爲其他腳本的全局變量。