このような構造のテーブルがあります...
the_geomデータ
geom1 data1+3000||data2+1000||data3+222
geom2 data1+500||data2+900||data3+22232
ユーザーのリクエストでレコードを返す関数を作りたい。
Example: for data2, retrieve geom1,1000 and geom2, 900
今まで私はこの関数(以下を参照)を作成しましたが、これは非常にうまく機能しますが、パラメーター置換の問題に直面しています...($1の代わりに'data2'を使用できないことがわかります...しかし、$1を使用できます後で
regexp_matches(t::text, E'(data2[\+])([0-9]+)'::text)::text)[2]::integer
私の機能
create or replace function get_counts(taxa varchar(100))
returns setof record
as $$
SELECT t2.counter,t2.the_geom
FROM (
SELECT (regexp_matches(t.data::text, E'(data2[\+])([0-9]+)'::text)::text)[2]::integer as counter,the_geom
from (select the_geom,data from simple_inpn2 where data ~ $1::text) as t
) t2
$$
language sql;
SELECT get_counts('data2') will work **but we should be able to make this substitution**:
regexp_matches(t::text, E'($1... instead of E'(data2....
関数の実行ではエラーが発生せず、$ 1を文字列として解釈するだけで結果が得られないため、構文上の問題が多いと思います。
前もって感謝します、