2016-12-06 2 views
0

Ich versuche, eine Funktion in postgresql zu erstellen und ich erhalte den folgenden Fehler:Postgresql Unknow Feld in Funktion

ERROR: column "A00" does not exist 
LINE 1: SELECT * from "UpdateStatus"(91206618515,"A00") 
                 ^
********** Error ********** 

ERROR: column "A00" does not exist 
SQL state: 42703 
Character: 50 

Meine Funktion unten:

CREATE OR REPLACE FUNCTION UpdateStatus(id bigint,status varchar(3)) 
RETURNS void AS $$ 
BEGIN 
UPDATE tb_test 
set 
id_status = status 
where id_test = id; 
END 
$$ LANGUAGE plpgsql; 

wenn ich die Parameter so sagen "Update" (91206618515, 'A00') bekomme ich folgende Fehlermeldung:

ERROR: function UpdateStatus(bigint, unknown) does not exist 

Runnig/df + u pdatestatus

öffentlich | Aktualisierungsstatus | void | cpf bigint, Statuszeichen

public | Aktualisierungsstatus | void | cpf bigint, Statuszeichen variiert

Vielen Dank im Voraus.

+0

Haben Sie versucht, CAST zu verwenden? – cwallenpoole

+0

CAST? Woher? Warum sollte eine Besetzung benötigt werden? Vielen Dank. –

+3

Verwenden Sie einfache Anführungszeichen für Parameter. Warum haben Sie den Funktionsaufruf in Anführungszeichen gesetzt? Versuchen Sie dies: 'SELECT UpdateStatus (91206618515, 'A00')' – 112g

Antwort

-1

Meine Wette ist, dass Sie mehrere Funktionen erstellen mit ähnlicher Unterschrift. Überprüfen Sie Ihre Schemafunktionen und löschen Sie die doppelte Funktion.

Versuchen Sie, den Namen Ihrer Funktion zum Testen zu ändern. Weil deine Funktion funktionieren sollte.

SQL DEMO

CREATE OR REPLACE FUNCTION TestUpdateStatus(id bigint,status varchar(3)) 
RETURNS varchar AS $$ 
BEGIN 
    return status; 
END 
$$ LANGUAGE plpgsql; 

SELECT TestUpdateStatus(1, 'A001') 

OUTPUT und sehen, wie Ergebnisse zeigen, Klein selbst wenn sie mit Camelcase definieren?

enter image description here

+0

Das Problem sind die Anführungszeichen. –

+0

@LaurenzAlbe Ich weiß, dass, wie Sie sehen können, ich einfache Anführungszeichen verwende. Aber basierend auf Kommentaren hat OP auch ein Problem mit 'char variant', ich habe eine' DEMO' geschrieben, um zu zeigen, dass das Problem woanders ist. –

2

In SQL maskieren Sie Strings mit einfachen Anführungszeichen, und Sie müssen die doppelten Anführungszeichen um die Funktionsnamen entfernen, weil Sie es mit einem Groß- und Kleinschreibung Namen erstellt haben:

SELECT * from UpdateStatus(91206618515, 'A00') 
+0

Ich habe diesen Fehler Fehler: Funktion updatestatusautonomo (Bigint, unbekannt) ist nicht eindeutig LINE 1: SELECT * von UpdateStatus (91206618515, 'A00') ^ TIPP: Es konnte keine beste Kandidatenfunktion gewählt werden. Möglicherweise müssen Sie explizite Typumwandlungen hinzufügen. –

+0

Ich kann nichts wie 'updatestatusautonomo' in Ihrem Quellcode sehen. Versuchen Sie '\ df + updatestatusautonomo', um die verschiedenen Varianten dieser Funktionen zu sehen. – clemens

+0

Sorry, der richtige Fehler:: Funktion updatestatus (bigint, unbekannt) ist nicht eindeutig LINE 1: SELECT * von UpdateStatus (91206618515, 'A00')^HINWEIS: Die beste Kandidatenfunktion konnte nicht ausgewählt werden. Möglicherweise müssen Sie explizite Typumwandlungen hinzufügen. –