SQL ORACLE将两个表与htf(超文本函数)结合起来

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL ORACLE将两个表与htf(超文本函数)结合起来相关的知识,希望对你有一定的参考价值。

我正在研究SQL ORACLE DATABASE,我创建了一个表而不是进入foor loob并使用htf将转换表转换为html formate。

create table first_table (id number, data varchar2(25));
insert into first_table values(101, 'numberone')
insert into first_table values(202, 'numbertwo')

create table second_table (no number, data varchar2(25));
insert into second_table values(05369277635, 'phoneone')
insert into second_table values(06362190876, 'phonetwo')

DECLARE
  v_html VARCHAR2(32767);
  s_html VARCHAR2(32767);
BEGIN
  v_html := v_html || HTF.TABLEOPEN('border="1px"');
  v_html := v_html || HTF.TABLEROWOPEN;
  v_html := v_html || HTF.TABLEHEADER('ID.DATA');
  v_html := v_html || HTF.TABLEROWCLOSE;
  s_html := s_html || HTF.TABLEOPEN('border="1px"');
  s_html := s_html || HTF.TABLEROWOPEN;
  s_html := s_html || HTF.TABLEHEADER('NUMBER.DATA');
  s_html := s_html || HTF.TABLEROWCLOSE;
FOR i IN (SELECT * FROM first_table) LOOP
    v_html := v_html || HTF.TABLEROWOPEN;
    v_html := v_html || HTF.TABLEDATA(i.id||'.'||i.data);
    v_html := v_html || HTF.TABLEROWCLOSE;
END LOOP;
FOR i IN (SELECT * FROM second_table) LOOP
    s_html := s_html || HTF.TABLEROWOPEN;
    s_html := s_html || HTF.TABLEDATA(i.no||'.'||i.data);
    s_html := s_html || HTF.TABLEROWCLOSE;
END LOOP;
v_html := v_html || HTF.TABLECLOSE;
s_html := s_html || HTF.TABLECLOsE;

DBMS_OUTPUT.PUT_LINE(v_html);
DBMS_OUTPUT.PUT_LINE(s_html);

结束;

我使用这个代码和结果就是这样;

ID.DATA
101.numberone
202.numbertwo
NUMBER.DATA
5369277635.phoneone
6362190876.phonetwo

但是我希望看到像;

ID.DATA
101.numberone
NUMBER.DATA
5369277635.phoneone
ID.DATA
202.numbertwo
NUMBER.DATA
6362190876.phonetwo

是否可能逐列分开?

答案

这些表真的不相关吗?我认为 - 在现实生活中 - 它们之间应该有关系。如果是这样,你将使用嵌套的FOR循环,例如:

   FOR i IN (SELECT * FROM first_table)
   LOOP
      v_html := v_html || HTF.TABLEROWOPEN;
      v_html := v_html || HTF.TABLEDATA (i.ID || '.' || i.DATA);
      v_html := v_html || HTF.TABLEROWCLOSE;

      FOR j IN (SELECT *
                  FROM second_table s
                 WHERE s.ID = i.ID --> you'd add such a condition, to join those tables
               )
      LOOP
         s_html := s_html || HTF.TABLEROWOPEN;
         s_html := s_html || HTF.TABLEDATA (j.NO || '.' || j.DATA);
         s_html := s_html || HTF.TABLEROWCLOSE;
      END LOOP;
   END LOOP;

以上是关于SQL ORACLE将两个表与htf(超文本函数)结合起来的主要内容,如果未能解决你的问题,请参考以下文章

Oracle:将两个表与一个公共列加上第二个表中的一个附加列(最新生效日期)连接以选择其他列

MySQL表与数据向Oracle移植(使用Oracle SQL Developer工具)

Oracle怎样创建关系表与其他的一个表关联

Oracle SQL:提取两个字符之间的文本

已经建立了两个表,请问如何用SQL语句建立关联?

如何将两个表与 SQL Server 中第二个表中引用同一列的两列连接起来