【发布时间】:2014-04-25 01:10:55
【问题描述】:
create or replace procedure NN(k number) as
cursor cursor1 IS
select id,x,y from query_points;
cursor cursor2 IS
select x,y from data_points;
sid number;
x1 number;
y1 number;
x2 number;
y2 number;
dist number;
result number;
begin
open cursor1;
loop
execute immediate 'delete from temp';
fetch cursor1 into sid, x1, y1;
exit when cursor1%notfound;
for rec in (select x,y from data_points) loop
x2 := rec.x;
y2 := rec.y;
dist:= sqrt(((x2-x1)**2)+((y2-y1)**2));
execute immediate 'insert into temp values('||dist||')';
end loop;
select distance into result from temp where rownum=k order by distance;
execute immediate 'insert into nn_results values('||sid||','||k||','||result||')';
end loop;
close cursor1;
end;
此过程中的动态sql语句在循环中不执行,而是单独执行。
此外,该过程不会终止。它会导致 google chrome 崩溃。
有经验的吗?
【问题讨论】: