PostgreSQL 存储过程中“DECLARE”处或附近的语法错误

问题描述

我正在 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;

还有:我如何调用这个程序来测试它是否有效?

谢谢

解决方法

像这样声明你的函数

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;
$$;

文档:Create function