2016-12-01 2 views
1

Я не смог создать эту функцию, как я получаю синтаксическую ошибку рядом INTEGER в линии 6. Я что-то упустил?PostgreSQL Синтаксис функции ошибки в разделе DECLARE

CREATE OR REPLACE FUNCTION public.update_application_status_by_token(applicationToken integer, userId integer, newStatus data.applicationstatus) 
    RETURNS BOOLEAN 
    LANGUAGE sql 
AS $function$ 
    DECLARE 
     applicationId INTEGER; 
    BEGIN 
     SELECT id INTO applicationId FROM data.listings_applications WHERE token = applicationToken; 
     INSERT INTO public.listings_applications_status(application_id, user_id, status) VALUES (applicationId, userId, newStatus); 
     UPDATE public.listings_applications SET status = newStatus WHERE token=applicationToken; 
     RETURN TRUE; 
     EXCEPTION WHEN OTHERS THEN 
     RETURN FALSE; 
    END; 
$function$ 
+0

изменить 'LANGUAGE sql' на' LANGUAGE plpgsql'? .. –

+0

работал! Спасибо, добавьте свои анны ниже, чтобы я мог отметить это как правильно. –

ответ

2

Это функция PL/pgSQL, поэтому вы должны объявить ее как таковой.

Использование

LANGUAGE plpgsql 

вместо

LANGUAGE sql 
1

изменение

LANGUAGE sql

в

LANGUAGE plpgsql

, чтобы заставить его работать. SQL DECLARE предназначен для курсоров. В вашей функции находится plpgslq команда