0

我使用 xmlelement 在 oracle 中编写了一段 html 代码。

我当前的数据库存储这些数据

+---------+----------------+---------- -+-----------+
| menu_id | 标题 | 网址 | 上层 |
+---------+----------------+---------- -+-----------+
| 1 | 表格 | 空 | 0 |
| 2 | 基本表格 | 表格-basic.html | 1 |
| 3 | 扩展表格 | 表单扩展.html | 1 |
| 4 | 验证 | 表单验证.html | 1 |
| 5 | 向导321 | 表单向导.html | 1 |
+---------+----------------+---------- -+-----------+

这是我想要得到的格式:

<ul class="dropdown-menu">
  <li>
      <a href="forms-basic.html">Basic forms</a>
  </li>
  <li>
      <a href="forms-extended.html">Extended forms</a>
  </li>
  <li>
      <a href="forms-validation.html">Validation</a>
  </li>
  <li>
      <a href="forms-wizard.html">Wizard</a>
  </li>
</ul>

我试图使用下面的代码来获得结果,但我知道它不会工作,因为内部查询返回不止一行。如果有人可以修改该解决方案或欢迎其他解决方案,请将其放在这里。

select 
  xmlelement("ul",
    xmlattributes('dropdown-menu' as "class"),
    xmlelement("li",
      xmlelement("a",
        xmlattributes(url as "href"),
        (select title from att1 where upper_lvl = 1)
      )
    )
  )

from att1
where menu_id = 1;
4

1 回答 1

1

您需要使用 XMLAgg(XML 聚合函数)来实现这一点

select 
  xmlelement("ul", xmlattributes('dropdown-menu' as "class"),
      XMLAgg(xmlelement("li",
                        xmlelement("a",
                        xmlattributes(url as "href"),title) as "Menu Element"
                        ) 
            )
          ) as Menu
    from att1 where upper_lvl = 1

让我知道这是否不适合您

于 2013-06-18T21:44:24.187 回答