私はSQLの初心者で、この質問の解き方がわかりません。次の SQL クエリとストアド プロシージャを 1 つの SQL クエリに結合する方法。これは PostgreSQL クエリおよび関数です。どんな助けでも大歓迎です。
次のクエリは、クエリの値ごとにストアド プロシージャ/関数を呼び出します。
SELECT t.trj_id, T2.trj_id, Similar_trj_woffset(t.trj_id, T2.trj_id)
FROM transitions T1,
transitions T2
WHERE T1.w_s = T2.w_s
AND T1.w_e = T2.w_e
AND T1.trans_id <> T2.trans_id
ストアド プロシージャ/関数は次のとおりです。
create or replace function similar_trj_woffset(
IN t1 as integer,
IN t2 as integer,
OUT score as integer,
OUT offset as integer
) AS $$
declare
off_set integer :=0;
score integer := 0;
cou integer;
time1 integer;
time2 integer;
dist integer;
begin
for off_set in 0..10 LOOP
time1 := 0;
time2 := 0 + off_set;
cou := 0;
while time2 < 100 Loop
select vec_length(P.x-P2.x,P.y-P2.y,P.z-P2.z) into dist
from AtomPositions P, AtomPositions P2
where P.trj_id = t1
and P2.trj_id = t2
and P.t = time1
and P2.t = time2;
if dist < cuto`enter code here`ff then
cou : = cou + 1;
time1 := time1 + 1;
time2 := time2 + 1;
end loop
if cou > score then
score := cou ;
offset := off_set;
end if;
off_set := off_set + 1;
end loop;
end $$ language plpgsql;
クエリとストアド プロシージャを 1 つの SQL クエリにマージする方法を教えてください。