このスニペットは、関数の一部であり、$ 1と$ 2と呼ばれる整数(およびID)と文字列(テーブル名)をindataとして取ります。最初の例では、関数が現在動作しているので、入力は(68, 'heat_arcs')
になり、関数が機能します。しかし、異なるテーブルで動作するように関数を拡張する必要があるので、cost FROM heat_arcs'
をcost FROM ' || $2 ||'
に変更できたと考えましたが、 "unterminated quoted string"のために構文エラーが発生します。パイプと文字列を結合する際の動作が一貫しない
文字列をクエリの後半部分では入力データと正常に結合できますが、初期部分では正常に結合できないのはなぜですか? pgr_trspは、最初と最後のパラメータ
電流の両方のための入力として文字列を要求します:
希望FROM pgr_trsp(
'SELECT gid as id, source, target, cost FROM heat_arcs',
r, 2, false, false, 'select 1000 as to_cost, b.target_id, a.via_path::text from
(select gid as target_id from '|| $2 ||' where source = ' || $1 ||' or target = ' || $1 ||') as b,
(select gid as via_path from '|| $2 ||' where source = ' || $1 ||' or target ='|| $1 ||') as a WHERE b.target_id <> a.via_path'
:
FROM pgr_trsp(
'SELECT gid as id, source, target, cost FROM '|| $2 ||',
r, 2, false, false, 'select 1000 as to_cost, b.target_id, a.via_path::text from
(select gid as target_id from '|| $2 ||' where source = ' || $1 ||' or target = ' || $1 ||') as b,
(select gid as via_path from '|| $2 ||' where source = ' || $1 ||' or target ='|| $1 ||') as a WHERE b.target_id <> a.via_path'
多くの点で、IMSoP。私はあなたのアドバイスを受け取り、クォート関数をチェックアウトします:) – FHilding