我有PL / pgSQL函数定义需要在创建新数据的过程中从文件脚本运行。但是我在使用psql.exe和文件中的函数时遇到错误,但是在pgAdminIII中的SQL编辑器中运行它是完全正常的。问题是什么?还有其他运行PL / pgSQL脚本的简单解决方案吗?
这是错误消息:
psql:./../ Generic_SQL / db-create-functions-generic.sql:17:错误: 语法错误a t或接近“创建”第1行:创建或替换 功能pk_get(tabname character varyi ...
命令行是:
C:\"Program Files"\PostgreSQL\9.4\bin\psql -d OR -U postgres -f ".\..\Generic_SQL\db-create-lic-tables.sql"
实际文件内容为:
CREATE OR REPLACE FUNCTION pk_get(tabname character varying)
RETURNS integer AS
$BODY$
DECLARE
ThePK integer;
BEGIN
--XStr:=TabName || HospUnitID;
--EXECUTE 'SELECT nextval(''' ||TabName || HospUnitID|| '''::regclass)' INTO ThePK; -- '' for the key name needed, so to escape needs dbl + general (so triple)
--ThePK:=HospUnitID*100000 + ThePK+1;
EXECUTE 'SELECT nextval(''' ||TabName || '_seq''::regclass)' INTO ThePK; -- '' for the key name needed, so to escape needs dbl + general (so triple)
RETURN ThePK;
END;
$BODY$
LANGUAGE plpgsql VOLATILE COST 100; -- This is the line 17 that's apparently problematic
ALTER FUNCTION pk_get(character varying)
OWNER TO postgres;