Funktionen ausführen

Hallo Freunde,

Ich habe ein sipmples Problem: Wie kann ich eine erstellte Funktion ausführen?

Es fuktioniert

SELECT * FROM funktionsname(p1, p2, p3)

Geht das auch über EXEC oder Execute? Bei mir irgendwie nicht.

Vielen Dank.

PS: Ich glaub langsam, ich bin blutiger Anfänger.

Sicher geht das:

test=*# create or replace function f_test(in i int,out a int, out b int) returns record as $$ begin raise notice 'bin in Funktion f_test()'; a:=i*2; b:=i*3; return; end;$$language plpgsql;
CREATE FUNCTION
Zeit: 0,531 ms
test=*# create or replace function f_test2() returns int as $$ begin execute 'select * from f_test(2);'; return 1; end; $$ language plpgsql;
CREATE FUNCTION
Zeit: 0,496 ms
test=*# select * from f_test2();
NOTICE:  bin in Funktion f_test()
CONTEXT:  SQL statement "select * from f_test(2);"
PL/pgSQL function "f_test2" line 1 at EXECUTE statement
 f_test2
---------
       1
(1 Zeile)

Zeit: 0,577 ms
test=*#

Man beachte die Ausgabe von raise notice als Beweis, das die Funktion via EXECUTE ausgeführt wird.

Was genau war/ist also Dein Problem?

Andreas

Ich war folgende Syntax von TSQL gewohnt und dachte, diese wäre auch unter PSQL möglich.

USE AdventureWorks;
GO
EXEC HumanResources.GetMitarbeiter N’Gilbert’, N’Guy’;
GO

– oder


USE AdventureWorks;
GO
EXECUTE HumanResources.GetMitarbeiter N’Gilbert’, N’Guy’;
GO

Aber dann halt nicht.

Vielen Dnak für Deine Infos. Wenn Du dann noch mein fuzzystrmatch-Modul-Inastallations-Problem lösen kannst, wärst Du mein PSQL-Gott :wink:
Jamax.

Steht übrigens auch in der Doku wie man Execute verwendet: PostgreSQL: Documentation: Manuals: PostgreSQL 8.3: EXECUTE

Dazu schrieb ich schon was. Mir fällt nix ein, was da noch zu ergänzen wäre.

Andreas

Ich habe das Problem auf die harte und schnellste Tor gelöst.

  1. Dump erstellt
  2. Mittels Shellskript PSQL deinstalliert
  3. Neustart
  4. Postgres neu instlliert (in der Mac-Version ist fuzzystrmatch.sql enthalten)
  5. Pfade gesetzt: $ LD_LIBRARY_PATH=/Library/PostgreSQL/8.3/lib
  6. Dump eingepielt: $ psql -U postgres postgres < dump.sql
  7. fuzzystrmatch.sql ausgeführt: $ psql -U postgres postgres < fuzzystrmatch.sql
  8. PLPGSQL installiert: $ createlang -Upostgres plpgsql postgres
    Funktioniert.

DAnke Euch.