2016-04-21 3 views
0

Я пытаюсь создать следующую процедуру в Aginity верстаке с СУБД PostgreSQL 8.0.2Создание функции в PostgreSQL

CREATE PROCEDURE Step1_data_main 
( 
@startdate NVARCHAR(MAX), 
@enddate NVARCHAR(MAX), 
@season NVARCHAR(MAX) 
) AS 

SELECT level1_idnt,day_dt, sum(sls_qty) as sum_units,sum(sls_amnt_price) as sum_sales 
FROM md1.loc_sku_dy_act_pos_full_v2 
WHERE seasn_cd = '[email protected]+' and day_dt >= ''[email protected]+'' and day_dt <= ''[email protected]+'' 
GROUP_BY level1_idnt, day_dt; 

END 


EXEC Step1_data_main 
'2015-03-01 00:00:00', 
'2015-09-30 00:00:00', 
'2' 
GO 

Однако я получаю следующее сообщение об ошибке

syntax error at or near "PROCEDURE" 

Любое руководство по этому желанию быть значительно оценен

РЕДАКТИРОВАТЬ

Я работаю в Agine Workbench с PostgreSQL. Ранее я неправильно сказал, что использую workbench mysql.

+0

Я не понимаю тебя апостроф. Правильны ли они? –

+0

Aginity Workbench - это нечто совершенно иное, чем SQL Workbench/J –

+0

Хорошо. Любая идея о том, как эта проблема может быть решена в Agine workbench? –

ответ

0

Вы должны попробовать таким образом, Yo использует синтаксис sql-сервера в mysql, поэтому для получения ошибки.

Это для MySQL

DELIMITER $$ 
CREATE PROCEDURE Step1_data_main( 
startdate NVARCHAR(20), 
enddate NVARCHAR(20), 
season NVARCHAR(20)) 

BEGIN 
    SELECT level1_idnt,day_dt, sum(sls_qty) as sum_units,sum(sls_amnt_price) as sum_sales 
    FROM md1.loc_sku_dy_act_pos_full_v2 
     WHERE seasn_cd = '[email protected]+' and day_dt >= ''[email protected]+'' 
     and day_dt <= ''[email protected]+'' 
     GROUP BY level1_idnt, day_dt; 
END$$ 

Update1: Это для SQL Server

Create PROCEDURE Step1_data_main( 
@startdate NVARCHAR(20),      
@enddate NVARCHAR(20), 
@season NVARCHAR(20)   
) 
AS 
BEGIN 
SELECT level1_idnt,day_dt, sum(sls_qty) as sum_units,sum(sls_amnt_price) as sum_sales 
    FROM md1.loc_sku_dy_act_pos_full_v2 
     WHERE seasn_cd = '[email protected]+' and day_dt >= ''[email protected]+'' 
     and day_dt <= ''[email protected]+'' 
     GROUP BY level1_idnt, day_dt; 
END; 
+0

Получение ошибки синтаксиса ошибки в или около «DELIMITER» –

+0

Я попытался в моей системе, он работает отлично для меня, сначала вы должны попробовать этот запрос в workbench mysql ...... whats error, которую вы получаете? –

+0

Я думаю, что я ошибался, предполагая, что работа в агонии использует mysql. По-видимому, из документации он использует sql-workbench/J. Вот почему это не работает? –

0

Это должно работать для вас:

CREATE PROCEDURE `Step1_data_main`( 
startdate NVARCHAR(1000), 
enddate NVARCHAR(1000), 
season NVARCHAR(1000) 
) 
begin 

SELECT level1_idnt,day_dt, sum(sls_qty) as sum_units,sum(sls_amnt_price) as sum_sales 
FROM md1.loc_sku_dy_act_pos_full_v2 
WHERE seasn_cd = cast(season as UNSIGNED) and 
     day_dt >= cast(startdate as datetime) and 
     day_dt <= cast(enddate as datetime) 
GROUP BY level1_idnt, day_dt; 

END$$ 
+0

Получение ошибки синтаксиса ошибки в «DELIMITER» или рядом с ним « –

+0

», если вы это сделаете с помощью процедуры добавления - удалите оба DELIMITER из кода - Павел Зимогоров –

Смежные вопросы