classificatorテーブルのlookup_type値を使用して、値を適切な型にキャストしようとしています。plpgsqlで変数をフィールド型として使用する方法は?
Table "public.classificator"
Column | Type | Collation | Nullable | Default
------------------+--------+-----------+----------+-------------------------------------------
classificator_id | bigint | | not null | nextval('classificator_id_seq'::regclass)
classificator | text | | not null |
lookup | text | | not null |
description | text | | |
lookup_value | text | | |
lookup_type | text | | |
私は例の値のために使用します( 'SYSTEM_SETTINGS' は、 'ブール' '真' 'システムやないため夏時間を使用してください' 'daylight_saving_enabled')。
変数として変数を使用しているときに問題が発生しています。
psqlのテスト:
私はplpgsqlがでこれをやろうとしているとしてselect cast('1' as integer); --> OK
select cast('1' as 'integer');
ERROR: syntax error at or near "'integer'"
、私は2つのオプションがあり、どのようにこの問題を解決するには:
1)
EXECUTE 'SELECT CAST($1 AS ' || 'boolean' || ')'
INTO value
USING 'true';
2)キャストされた値を返すifsがたくさんある関数を作成する IF type = 'boolean' THEN return 'value'::boolean
など
この問題の解決策はありますか?
を、関数が、なんとかではありません:) – user1190411
来る他の人の回答者へ:ダウンしないでください。 "おそらくあなたはレコードを返す関数を持つことができるかもしれない..." - そのような関数の出力を使うときは、とにかくキャストを指定しなければならないことを覚えておいてから、私はそれを覚えていました。 – Scoots