通過儲存過程實現排序
create or replace procedure sort_node www.2cto.com
( node_xlid in varchar2)as
v_start_node varchar2(100);
v_node1 varchar2(100);
v_node2 varchar2(100);
v_count number := 0;
v_index number :=0;
type start_nodes_table is table of varchar2(100) index by binary_integer;
startnodes_set start_nodes_table;
begin
--根據線路id來查詢所有點裝置的節點資訊,找到首節點資訊,以找到的第乙個沒有前序節點且後序節點不為空的node作為首節點。
--首節點可以為多個,因為連線關係在指定的過程當中可能出現多段。
--如果遍歷完都沒有找到這樣的節點,說明還沒有對點裝置指定敷線關係,那麼就不更新排序號,按照採集的節點名稱排序。
for rec in (select a.global_id globalid,a.par_id parid,a.sbmc name from
dp_component_common a, dp_xl_sb_re b,em_equipment c
where a.global_id = b.global_id and a.par_id is null and a.equipment_fno=c.equipment_fno and c.is_point=1
and b.xl_global_id =node_xlid )
loop
--判斷是否為首節點,獲取到當前點裝置的global_id,依據線路裝置包含關係中前序為空,後續不為空
--同時把所有的首節點新增到用於存放首節點的表中。
select node1_id,node2_id into v_node1,v_node2 from dp_xl_sb_re where global_id = rec.globalid and xl_global_id = node_xlid;
if(v_node1 is null and v_node2 is not null) then
v_index :=v_index+1;
--v_start_node := rec.globalid;
startnodes_set(v_index):=rec.globalid;
--exit;
end if;
end loop;
--如果集合長度不為空,那麼就說明存在首節點,遍歷集合中的首節點,對從首節點開始的每個點裝置進行遍歷,
--對每一段進行排序,對排序號賦值排序
--if(v_start_node is not null and length(trim(v_start_node))!=0)then
if(startnodes_set.count!=0)then
--首先把線路下面的排序號都置為空
update dp_xl_sb_re set sortno = null where xl_global_id = node_xlid;
--迭代首節點,獲取到首節點
for i in 1..startnodes_set.count loop
v_start_node := startnodes_set(i);
--重新編號
for rec in (select global_id,node1_id from dp_xl_sb_re where xl_global_id = node_xlid
start with global_id = v_start_node and xl_global_id = node_xlid
connect by prior global_id = node1_id )
loop
v_count:=v_count+1;
update dp_xl_sb_re set sortno = v_count where global_id = rec.global_id and xl_global_id = node_xlid;
end loop;
end loop;
end if;
--排序結束
end ;
通過儲存過程實現分頁
create procedure dbo commonpageselect sqlwhere varchar 1000 查詢條件 pagenum int 20,每頁的記錄數 beginline int 1,第幾頁,預設第一頁 sqltable varchar 5000 要查詢的表或檢視,也可以一句s...
通過儲存過程分頁
asp.net中實現分明功能,主要運用的是aspnetpager,再呼叫儲存過程進行分頁,該方法適合運用的範圍非常廣,不錯,set ansi nulls on set quoted identifier on goalter procedure dbo getpagerdata 表名 tbname ...
Oracle儲存過程實現通過動態引數複製表
使用儲存過程複製表,使用儲存過程來複製錶比使用自定義函式更簡單,因為自定義函式返回多行結果需要用游標,但帶游標的查詢語句不能用於create as。create or replace procedure createtable tname in varchar2,id in number is sq...