昨日、PostgreSQL データベースをバージョン 9.1.3 にアップグレードしました。すべてをテストして準備ができていると思っていましたが、見落としていた機能があります。次のようなテーブル型を返します。
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),
...
エラーが発生する場所であるため、選択の最初の列のみを指定します。今日まで、この関数は正常に実行されていましたが、現在は次のエラーが発生します。
エラー: クエリの構造が関数の結果の型と一致しません
詳細: 返された型の文字の変化が、列 1 の予想される型の文字の変化 (8) と一致しません。 ]
列nfa.patient_id_number
はテキストであり、その列にキャストされてpatient_id_number
いpatient_for_registrar
ますvarchar(8)
。これについて読んだ後、テキストからキャストするときに列の長さが指定されていないことが問題だと思います。しかし、問題は、これを修正するために部分文字列のさまざまな組み合わせを試しましたが、どれも問題を解決していないことです:
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)),
誰にも指針がありますか?