#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;
$;
Документация : Создание функции