views.out
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:3k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. QUERY: create function pslot_backlink_view(bpchar)
  2. returns text as '
  3. <<outer>>
  4. declare
  5.     rec record;
  6.     bltype char(2);
  7.     retval text;
  8. begin
  9.     select into rec * from PSlot where slotname = $1;
  10.     if not found then
  11.         return '''';
  12.     end if;
  13.     if rec.backlink = '''' then
  14.         return ''-'';
  15.     end if;
  16.     bltype := substr(rec.backlink, 1, 2);
  17.     if bltype = ''PL'' then
  18.         declare
  19.     rec record;
  20. begin
  21.     select into rec * from PLine where slotname = outer.rec.backlink;
  22.     retval := ''Phone line '' || trim(rec.phonenumber);
  23.     if rec.comment != '''' then
  24.         retval := retval || '' ('';
  25. retval := retval || rec.comment;
  26. retval := retval || '')'';
  27.     end if;
  28.     return retval;
  29. end;
  30.     end if;
  31.     if bltype = ''WS'' then
  32.         select into rec * from WSlot where slotname = rec.backlink;
  33. retval := trim(rec.slotname) || '' in room '';
  34. retval := retval || trim(rec.roomno);
  35. retval := retval || '' -> '';
  36. return retval || wslot_slotlink_view(rec.slotname);
  37.     end if;
  38.     return rec.backlink;
  39. end;
  40. ' language 'plpgsql';
  41. QUERY: create function pslot_slotlink_view(bpchar)
  42. returns text as '
  43. declare
  44.     psrec record;
  45.     sltype char(2);
  46.     retval text;
  47. begin
  48.     select into psrec * from PSlot where slotname = $1;
  49.     if not found then
  50.         return '''';
  51.     end if;
  52.     if psrec.slotlink = '''' then
  53.         return ''-'';
  54.     end if;
  55.     sltype := substr(psrec.slotlink, 1, 2);
  56.     if sltype = ''PS'' then
  57. retval := trim(psrec.slotlink) || '' -> '';
  58. return retval || pslot_backlink_view(psrec.slotlink);
  59.     end if;
  60.     if sltype = ''HS'' then
  61.         retval := comment from Hub H, HSlot HS
  62. where HS.slotname = psrec.slotlink
  63.   and H.name = HS.hubname;
  64.         retval := retval || '' slot '';
  65. retval := retval || slotno::text from HSlot
  66. where slotname = psrec.slotlink;
  67. return retval;
  68.     end if;
  69.     return psrec.slotlink;
  70. end;
  71. ' language 'plpgsql';
  72. QUERY: create function wslot_slotlink_view(bpchar)
  73. returns text as '
  74. declare
  75.     rec record;
  76.     sltype char(2);
  77.     retval text;
  78. begin
  79.     select into rec * from WSlot where slotname = $1;
  80.     if not found then
  81.         return '''';
  82.     end if;
  83.     if rec.slotlink = '''' then
  84.         return ''-'';
  85.     end if;
  86.     sltype := substr(rec.slotlink, 1, 2);
  87.     if sltype = ''PH'' then
  88.         select into rec * from PHone where slotname = rec.slotlink;
  89. retval := ''Phone '' || trim(rec.slotname);
  90. if rec.comment != '''' then
  91.     retval := retval || '' ('';
  92.     retval := retval || rec.comment;
  93.     retval := retval || '')'';
  94. end if;
  95. return retval;
  96.     end if;
  97.     if sltype = ''IF'' then
  98. declare
  99.     syrow System%RowType;
  100.     ifrow IFace%ROWTYPE;
  101.         begin
  102.     select into ifrow * from IFace where slotname = rec.slotlink;
  103.     select into syrow * from System where name = ifrow.sysname;
  104.     retval := syrow.name || '' IF '';
  105.     retval := retval || ifrow.ifname;
  106.     if syrow.comment != '''' then
  107.         retval := retval || '' ('';
  108. retval := retval || syrow.comment;
  109. retval := retval || '')'';
  110.     end if;
  111.     return retval;
  112. end;
  113.     end if;
  114.     return rec.slotlink;
  115. end;
  116. ' language 'plpgsql';
  117. QUERY: create view Pfield_v1 as select PF.pfname, PF.slotname,
  118. pslot_backlink_view(PF.slotname) as backside,
  119. pslot_slotlink_view(PF.slotname) as patch
  120.     from PSlot PF;