2017-07-05 4 views
1

Ich erstellte neue Datenbank namens test1, neue Benutzer test1_user und ich gewährte alle auf Datenbank test1 zu test1_user. Außerdem habe ich Schema test1_user erstellt. Jetzt habe ich auch das neue Schema functions_package erstellt und sein Besitzer ist test1_user.Postgresql Schemas Konflikt

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

ich einige Funktionen unter Schema functions_package erstellt und versucht nun, I`m neue Funktion zu erstellen, die die alten Funktionen aber im immer eror verwendet:

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 Ich bekomme diesen Fehler für jede Funktion im Schema functions_package, die ich in meiner neuen Funktion aufrufen möchte. In der alten Funktion habe ich überhaupt keine Funktion aufgerufen, also hatte ich keinen solchen Fehler. Einige Hilfe?

+0

bitte den Code liefern, der den Fehler oben –

+0

ich das Hauptpost aktualisiert gibt. – Mariel

+0

danke - macht jetzt sence –

Antwort

2

Ihnen fehlt select vor Funktionsname: Versuch:

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

Danke! Muss ich immer ausführen, bevor ich eine Funktion aufrufe? – Mariel

+0

ja. postgres hat keine Prozeduren - nur Funktionen, also können Sie Formular-Funktion auswählen und Funktion auswählen, müssen aber eine Aktion ausführen. Wenn Sie in plpgsql das Ergebnis auswählen und verwerfen möchten, verwenden Sie perform –

Verwandte Themen