2016-11-20 2 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 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 

のエラーこのステートメントを実行しようとしているときに

は、私は、クエリ

DECLAREのv_stdate日をBEGINを実行ゴードンの提案に応じて変更を行いました。 DECLARE v_endate date; SET v_date =日付( '2016-01-01'); SET v_endate =日付( '2016-04-03'); v_stdateとv_endate END BETWEEN DATEが予期しないトークンのエラーが が削除されますが、その後、私は別のエラー を取得していますMYTABLE FROM SELECT * [ここに画像の説明を入力]それから私は、行をコメント[「と」は予期しないと言います] そのあなたがiSeriesの(旧AS400)にある場合

+0

あなたは実際のエラーを出力してください。 –

+0

これは期待通りには動作しません。複合SQLでは、SELECT ... INTOを使用するか、カーソルを宣言して開く必要があります。単純な 'SELECT'文はそこでは使用できません。 – mustaccio

答えて

0

可能性を助けてください、私のテーブル

SELECT * FROMで 'から' 予期しないエラーを言って別のSQLエラーを投げては

--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ライブラリに変数を作成することをお勧めします。