Hallo

hier noch ein paar weitere Informationen:
Set Option gilt nicht für Funktionen/Prozeduren.

Da diese in der selben Activation-Group laufen (Service-Programm) wie das aufrufende Programm ist der Suchalgorythmus vom Rufer abhängig.
Das ist nicht korrekt!
SET OPTION ist auch in SQL Prozeduren und Funktionen erlaubt, allerdings muss das SET OPTION-Statement vor dem Compound Statement (BEGIN) angegeben werden. Allerdings werden die Informationen, die über SET OPTION gesetzt werden NICHT in den System-Tables gespeichert, d.h. gehen beim reverse engineering verloren.
Ob System oder SQL-Naming verwendet wird hat weder mit dem Rufer, noch mit der Aktivierungs-Gruppe etwas zu tun, sondern nur mit den Default-Werten die beim Erstellen des Objekts (UDF oder Stored Procedure) gegolten haben oder was über SET OPTION angegeben wurde. Es wäre absolut tödlich, wenn das Ganze abhängig von der Aktivierungsgruppe wäre und bei einem Aufruf die System-Namensregelung und beim nächsten Aufruf die SQL-Namensregelung gelten würde.

SET OPTION SQLPATH oder SET PATH gibt den Suchpfad nur für Stored Procedures oder User Defined Functions an, die in (statischen) SQL Statements unqualifiziert aufgerufen werden. SET PATH gilt ausserdem nur wenn SQL-Naming verwendet wurde. Bei System-Naming wird die Bibliotheksliste durchsucht. Der SQL PATH gibt jedoch NICHT den Suchpfad für Tabellen/Dateien und Views an.

In welcher Bibliothek/Schema die unqualifiziert angegebenen Tabellen/Dateien und Views gesucht werden, hängt von dem verwendeten Naming ab.

Wird SQL-Naming verwendet, werden die Daten in einer Bibliothek gesucht, die dem Namen des angemeldeten Benutzers entspricht. Über SET CURRENT SCHEMA kann man jedoch eine andere beliebige Bibliothek vorgeben. Es können allerdings nur Tabellen oder Views in einer einzigen Bibliothek unqualifiziert angesprochen werden. Müssen Dateien/Tabellen oder Views in mehreren Bibliotheken/Schemata angesprochen werden, ist ein qualifizierter Aufruf notwendig.

Wird System-Naming verwendet, wird die Bibliotheks-Liste als Basis genommen. Hier können auch Dateien, die in unterschiedlichen Bibliotheken hinterlegt sind, unqualifiziert angesprochen werden.

Zu Deinen Problemen:
1. Anstatt das Service-Programm zu kopieren, solltes Du es löschen und die UDF in der anderen Bibliothek erneut erstellen. Das Problem ist, dass durch die Kopiererei die Signatur über die die Funktion gefunden wird nicht mehr korrekt ist.
2. Der sicherste Weg die Funktion auf eine andere Maschine zu transportieren ist, den Source-Code zu übertragen und die Funktion neu zu erstellen. Ansonsten bleibt nur Sichern der Bibliothek und auf der anderen Maschine zurücksichern, dann werden auch die System-Tables korrekt aktualisiert.

Birgitta