'daki yeniden işlevlendirme işlev tanımları Postgres 8.4'teki bir veritabanı ile 9.3'te çalışan bir işlev arasında işlev tanımları oluşturmaya çalışıyorum. AncakPostgreSQL
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
[....]
9.3 içine bu sql komut dosyası yüklemeye çalışırken bana bir sözdizimi verir:
Bana şöyle çıkış verir HangiSELECT 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';
kullanılarak 8.4 sunucuda işlev tanımları dampingli hata.
ERROR: syntax error at or near "CREATE"
LINE 11: CREATE OR REPLACE FUNCTION public.validate_leveranciersrolle
Burada yanlış yapıyorum?
Her işlevin 'END' satırından sonra yarım virgül olmasın mı? – Glenn
@Glenn 'END' sonrası isteğe bağlıdır, ancak oluşturma ifadeleri arasında bir tane olmalıdır (her kapanıştan sonra $ $ işlevini gösterir). – pozs