2017-05-11 1 views
0

私はPostgreSQL(pgAdmin 4を使用)でテーブルを返す関数を扱っています。それはうまく動作するように使用されるが、機能を変更しようとしたとき、私は、このエラーメッセージが表示されますいくつかの理由:postgresqlは文字列を切り捨てます

ERROR: type "TABLE(id integer, id_scenario integer, date_valid timestamp wit" does not exist NOTICE: identifier "TABLE(id integer, id_scenario integer, date_valid timestamp without time zone, dni_q95 double precision, csp_forecast_q95 double precision, storage_q95 double precision)" will be truncated to "TABLE(id integer, id_scenario integer, date_valid timestamp wit"

私はコードの私のラインが切り捨てられますので、識別子は、長い63バイトを超えることはできません理解しています。なぜ、この行が突然識別子として認識されている

  1. :誰かがこれらの2つの質問に私を助けることができれば、私は本当に感謝されるでしょうか?

  2. これらの列がすべて返される必要があることを知って、この問題を回避するにはどうすればよいですか?ここで

関数本体である:

CREATE OR REPLACE FUNCTION public.csp_park_95(id_park integer) 
RETURNS SETOF "TABLE(id integer, id_scenario integer, date_valid 
timestamp without time zone, dni_q95 double precision, csp_forecast_q95 
double precision, storage_q95 double precision)" 
LANGUAGE 'sql' 
COST 100.0 
VOLATILE 
ROWS 1000.0 
AS $function$ 

-- irrelevant code 

$function$; 

ALTER FUNCTION public.csp_park_95(integer) 
OWNER TO "POC_kacare_admin"; 
+1

を "*なぜ、このラインが突然識別子として認識されています?" *二重引用符は識別子用です:https://www.postgresql.org/docs/current/static/sql-syntax-lexical.html#SQL-SYNTAX-IDENTIFIERS –

答えて

0

次のように二重引用符を削除するようにしてください:

CREATE OR REPLACE FUNCTION public.csp_park_95(id_park integer) 
    RETURNS TABLE(id integer, id_scenario integer, date_valid 
    timestamp without time zone, dni_q95 double precision, csp_forecast_q95 
    double precision, storage_q95 double precision) 
    LANGUAGE 'sql' 
    COST 100.0 
    VOLATILE 
    ROWS 1000.0 
    AS $function$ 
    -- irrelevant code 
    $function$; 
+0

これはpgAdminのバグではありません。二重引用符は識別子のために使用されます。したがって、TABLE(id整数、id_scenario整数、date_validタイムゾーンなしのタイムスタンプ 、dni_q95倍精度、csp_forecast_q95 倍精度、storage_q95倍精度) "は**名前であり、パラメータリストではありません。 –

+0

はい、わかっています。しかし、私が正しく質問を理解しているなら、 ""テーブル(ID整数、ID_Scenario整数、タイムゾーンなしの日付タイムスタンプ、dni_q95倍精度、csp_forecast_q95倍精度、storage_q95倍精度)は、この問題を回避するために、返されたすべての列が必要であることを知っていますか? " –

+0

とにかく、私はpgAdmin4のバグの推測を避けるために私の答えを編集しました。 –

関連する問題