私のk-medoidアルゴリズムの一部として、関数内にo_randomというレコード変数を宣言しました。この変数は、このクエリのように犯罪のテーブルからランダムな行を取得するために使用します。RECORD変数からの値の選択
EXECUTE 'SELECT * FROM algorithms.kmedoid_crimes_' ||k||' WHERE
cluster_id='||k_count||' OFFSET floor(random()*'||row_count||') LIMIT 1'
INTO o_random;
しかし、以下のクエリでは、「レコードのデータ型で緯度を識別できませんでした」というエラーが表示されます。行を取得している犯罪テーブルには緯度というフィールドがあります。レコード変数からデータを誤って取得しようとしていますか?
EXECUTE 'UPDATE algorithms.km_cluster_centres_' ||k||'
SET latitude = $1.latitude, longitude = $1.longitude, geom =
ST_Transform(ST_SetSRID(ST_MakePoint($1.longitude, $1.latitude), 4326),3435)
WHERE id=' ||k_count
USING o_random;
は、スタック上のいくつかの解決策が見つかりましたが、それらのどれも..助けをいただければ幸いです動作するようには思えません。
関連問題の解決策はここにも適用してログインしようとする作業をdosen't場合'' ... latitude =($ 1 :: text :: kmedoid_crimes_ '|| k ||')。latitude ... ''のように、execute文の中にもあります。あるいは、 'kmedoid_crimes_ *'テーブルに祖先、またはすべてのテーブルが従うタイプがある場合、そのレコードをUSING節のレコードにキャストすることができます。 – pozs
こんにちは、あなたはそれが正しい作品です。ありがとう、 – Ponsietta