"Funktion nicht vorhanden", aber ich denke wirklich, dass es funktioniert

Bin ich verrückt oder einfach nur dumm?

dev=# \df abuse_resolve 
List of functions
-[ RECORD 1 ]-------+------------------------------------------------------------------------------------------------------------------------------------
Schema              | public
Name                | abuse_resolve
Result data type    | record
Argument data types | INOUT __abuse_id bigint, OUT __msg character varying
Type                | normal

dev=# select abuse_resolve('30'::bigint); 
ERROR:  function abuse_resolve(bigint) does not exist
LINE 1: select abuse_resolve('30'::bigint);
               ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.

Hier ist die CREATE FUNCTION habe ich weggelassen, das Fleisch der code, aber das sollte irrelevant sein:

CREATE OR REPLACE FUNCTION abuse_resolve(INOUT __abuse_id bigint, OUT __msg character varying) RETURNS record AS $_$
DECLARE
    __abuse_status    VARCHAR;
BEGIN
 ...snip...
    UPDATE abuse SET abuse_status    = __abuse_status,
                       edate    = now(),
                       closed_on = now()
                 WHERE abuse_id        = __abuse_id;
    __msg = 'SUCCESS';
END;
$_$ LANGUAGE plpgsql SECURITY DEFINER;

Und nur für kichert:

GRANT ALL ON FUNCTION abuse_resolve(INOUT __abuse_id, OUT __msg character varying) TO PUBLIC;
GRANT ALL ON FUNCTION abuse_resolve(INOUT __abuse_id, OUT __msg character varying) TO myuser;

Diese Funktion scheint, wie es existiert. Was könnte ich vermissen?

Dies ist gelöst, die Antwort ist: ich bin dumm. Ich hatte falsch definiert die Argumente, die ursprünglich, aber mein code war mit die richtigen sind. Es war ein extra bigint hatte kein Geschäft dort.

  • Kannst du die create function Aussage?
  • Haben Sie führen beide in der selben Sitzung? Gleichen Benutzer? Gleiche search_path?
  • Ja, es gibt nur einen Benutzer. search_path auf öffentlich gesetzt ist,, ZEIGEN, bestätigt dies. Ich werde Bearbeiten Sie mit CREATE FUNCTION
InformationsquelleAutor echtish | 2012-03-13
Schreibe einen Kommentar