Gestern haben wir eine PostgreSQL-Datenbank auf die Version 9.1.3 aktualisiert. Wir dachten, wir hätten alles getestet und fertig, aber es gibt eine Funktion, die wir übersehen haben. Sie gibt einen Tabellentyp wie diesen zurück:
CREATE OR REPLACE FUNCTION myfunc( patient_number varchar
, tumor_number_param varchar, facility_number varchar)
RETURNS SETOF patient_for_registrar
LANGUAGE plpgsql
AS
$body$
BEGIN
RETURN QUERY
SELECT cast(nfa.patient_id_number as varchar),
...
Ich gebe nur die erste Spalte des Selects an, weil dort der Fehler auftritt. Vor heute lief diese Funktion gut, aber jetzt gibt es diesen Fehler:
ERROR: Struktur der Abfrage entspricht nicht dem Ergebnistyp der Funktion
Einzelheiten: Zurückgegebener Typ character varying stimmt nicht mit dem erwarteten Typ überein Zeichen variierend(8) in Spalte 1. Wo: PL/pgSQL-Funktion "getwebregistrarpatient_withdeletes" Zeile 3 bei RETURN QUERY [SQL State=42804]
Die Spalte nfa.patient_id_number
ist Text und wird für die Spalte patient_id_number
en patient_for_registrar
das ist varchar(8)
. Nach dem Lesen über diese einige Ich denke, das Problem ist, weil die Spaltenlänge nicht angegeben wird, wenn Casting von Text. Aber das Problem ist, ich habe versucht, verschiedene Kombinationen von Teilzeichenfolgen, um dies zu beheben und keine sind das Problem zu lösen:
substring(cast(nfa.patient_id_number as varchar) from 1 for 8),
cast(substring(nfa.patient_id_number from 1 for 8) as varchar),
cast(substring(nfa.patient_id_number from 1 for 8) as varchar(8)),
Hat jemand einen Tipp für Sie?