2017-07-05 1 views
1

J'ai créé une nouvelle base de données nommée test1, nouvel utilisateur test1_user et j'ai accordé tout sur la base de données test1 à test1_user. De plus, j'ai créé le schéma test1_user. Maintenant, j'ai aussi créé un nouveau schéma functions_package et son propriétaire est test1_user.postgresql schemas conflict

mon code:

CREATE OR REPLACE FUNCTION functions_package.newFunction(file_id  
utl_file.file_type) RETURNS VOID AS $body$ 
BEGIN 
functions_package.old_function1(file_id); 
functions_package.old_function2(file_id); 
functions_package.old_function3(file_id); 

End; 
-- 
$body$ 
LANGUAGE PLPGSQL 
SECURITY DEFINER 
STABLE; 

J'ai créé quelques fonctions sous schéma functions_package et maintenant je m `essayer de créer une nouvelle fonction qui utilise les anciennes fonctions, mais im obtenir Eror:

ERROR: syntax error at or near "functions_package" 
LINE 3: functions_package.old_function('aa'); 

I M trying to create the new function from user test1_user; I m obtenir cette erreur pour chaque fonction dans le schéma functions_package que j'essaye d'invoquer dans ma nouvelle fonction. Dans toute la vieille fonction, je n'ai pas invoqué de fonction du tout, donc je n'ai pas eu ce genre d'erreur. De l'aide?

+0

s'il vous plaît fournir le code qui donne à l'erreur ci-dessus –

+0

je mis à jour le poste principal. – Mariel

+0

merci - fait sence maintenant –

Répondre

2

vous manque select avant le nom de la fonction: essayer:

CREATE OR REPLACE FUNCTION functions_package.newFunction(file_id  
utl_file.file_type) RETURNS VOID AS $body$ 
BEGIN 
perform functions_package.old_function1(file_id); 
perform functions_package.old_function2(file_id); 
perform functions_package.old_function3(file_id); 

End; 
-- 
$body$ 
LANGUAGE PLPGSQL 
SECURITY DEFINER 
STABLE; 
+0

Merci! Dois-je toujours utiliser avant d'appeler une fonction? – Mariel

+0

oui. posrtgres n'a pas de procédures - seulement des fonctions, donc vous pouvez sélectionner une fonction de formulaire et sélectionner une fonction, mais vous avez besoin d'une action dessus. dans PLPGSQL quand vous voulez sélectionner et rejeter le résultat, vous utilisez effectuer –