Синтаксическая ошибка в или рядом с «ОБЪЯВЛЕНИЕМ» в хранимой процедуре PostgreSQL

#postgresql #postgresql-9.6

Вопрос:

Я создаю хранимую процедуру в PostgreSQL 9.6, но получаю синтаксическую ошибку. Я новичок в PostgreSQL. Есть ли еще синтаксические ошибки в моем коде?

 CREATE OR REPLACE FUNCTION DBO.Proc_Activity()  
DECLARE
a_sActivityName TYPE  VARCHAR(30); 
a_sActivityDescription TYPE  VARCHAR(2000);  
a_sUserName TYPE  VARCHAR(30);  
a_sErrDesc TYPE  VARCHAR(500);  
   
RETURNS VOID AS $  
BEGIN  
       
 insert into Activity_Log (sActivityName,sActivityDescription,sError,dCreatedDate,sCreatedBy)values( a_sActivityName ,a_sActivityDescription, a_sErrDesc ,NOW(),a_sUserName)  
   
END;
$ LANGUAGE plpgsql;
 

А также: как я могу вызвать эту процедуру, чтобы проверить, работает ли она ?

Спасибо

Комментарии:

1. Да: DECLARE это часть тела функции. Кроме того, TYPE s-это слишком много.

Ответ №1:

Объявите свою функцию следующим образом

 CREATE OR REPLACE FUNCTION Proc_Activity()
RETURNS VOID
LANGUAGE plpgsql
AS $
DECLARE
    a_sActivityName VARCHAR; 
    a_sActivityDescription VARCHAR;  
    a_sUserName VARCHAR;  
    a_sErrDesc VARCHAR;  
BEGIN  
 insert into Activity_Log (sActivityName,sActivityDescription,sError,dCreatedDate,sCreatedBy)values( a_sActivityName ,a_sActivityDescription, a_sErrDesc ,NOW(),a_sUserName);  
END;
$;
 

Документация : Создание функции