#oracle #shortest-path #oracle-spatial
#Oracle #кратчайший путь #oracle-пространственный
Вопрос:
Я попытался создать пространственную сеть в редакторе клиента Oracle Sql Developer; Когда я попробовал этот код, он дал мне «истинный» результат;
SELECT SDO_NET.NETWORK_EXISTS('network_name') FROM DUAL;
это означает, что команды SDO_NET работают должным образом.
Но, когда я попытался этот код;
DECLARE
cost NUMBER;
path_id NUMBER;
res_numeric NUMBER;
BEGIN
path_id := sdo_net_mem.network_manager.shortest_path('network_name',source_node_id, dest_node_id);
cost := SDO_NET_MEM.PATH.GET_COST('network_name', path_id);
DBMS_OUTPUT.PUT_LINE('The ID of the shortest path from X to Y is: ' || path_id || ' and it costs ' || cost);
END;
Дал мне этот результат;
Как я могу это решить; Спасибо.
Ответ №1:
Вы сначала загрузили сеть? Вы делаете это с помощью процедуры SDO_NET_MEM.NETWORK_MANAGER.READ_NETWORK(). В вашем случае:
SDO_NET_MEM.NETWORK_MANAGER.READ_NETWORK('network_name', 'TRUE');
Обратите внимание, что пакет SDO_NET_MEM устарел в 12c и больше не должен использоваться.
Комментарии:
1. есть ли другой возможный способ создания пространственной сети в oracle?
Ответ №2:
Попробуйте выполнить эту процедуру для проверки вашей сети
select SDO_NET.VALIDATE_NETWORK('network_name') from dual;
какая у вас версия Oracle?
Обычно мы выполняем сеть чтения перед запуском любых сетевых методов.