0
Postgres 8.4のデータベースと9.3のデータベース間の関数定義を再作成しようとしています。PostgreSQLでの関数定義の再作成
私は私にそうような出力を提供します
SELECT pg_get_functiondef(f.oid)
FROM pg_catalog.pg_proc f
INNER JOIN pg_catalog.pg_namespace n ON (f.pronamespace = n.oid)
WHERE n.nspname = 'public';
を使用して8.4サーバー上の関数定義をダンプ:9.3には、このSQLスクリプトをロードしようとしたときに
CREATE OR REPLACE FUNCTION public.delete_fentity()
RETURNS trigger
LANGUAGE plpgsql
AS $function$
DECLARE
BEGIN
DELETE FROM fentities WHERE fitnummer=OLD.fitnummer;
RETURN new;
END
$function$
CREATE OR REPLACE FUNCTION public.validate_leveranciersrollen_deletion()
RETURNS trigger
LANGUAGE plpgsql
AS $function$
DECLARE
BEGIN
IF NOT EXISTS
(
SELECT *
FROM leveranciersrollen
WHERE organisaties_id=OLD.organisaties_id
AND levrol='contactpersoon'
)
AND
(
EXISTS
[....]
は、しかし、それは私の構文を提供しますエラー。
ERROR: syntax error at or near "CREATE"
LINE 11: CREATE OR REPLACE FUNCTION public.validate_leveranciersrolle
私はここで間違っていますか?
各関数の 'END'行の後ろにセミコロンを入れてはいけませんか? – Glenn
@Glennの 'END'の後にはオプションですが、(' $ function $ 'を閉じるたびに)create文の間に1つあるはずです。 – pozs