【问题标题】:How to select a table dynamically with HSQLDB and Hibernate?如何使用 HSQLDB 和 Hibernate 动态选择表?
【发布时间】:2011-10-10 04:17:28
【问题描述】:

我有一个表引用了其他表。存储的是表名和实体 ID。

像这样:

         ref_table

   id  | table_name | refId
-------+------------+-------
    1  |   test     |   6
    2  |   test     |   9
    3  |   other    |   5

现在我尝试制定一个 SQL/FUNCTION,它从正确的表中返回正确的实体。比如:

SELECT * FROM resolveId(3)

我希望从表“other”中获取 ID 为“5”的实体。这可能吗?我想我可以使用存储过程(CREATE FUNCTION)来做到这一点。该函数必须检查“ref_table”并返回要在 SQL 语句中使用的表的名称……但具体如何?

【问题讨论】:

    标签: sql stored-procedures hsqldb


    【解决方案1】:

    如果你想在选择语句或连接中使用结果实体,你应该使用 CREATE FUNCTION 和 RETURNS TABLE (..)

    HSQLDB 例程中有一个限制,不允许动态创建 SQL。因此,CREATE FUNCTION 的主体可能包含一个 CASE 或 IF ELSE 块,它根据输入值 (1, 2, 3, ..) 切换到预定义的 SELECT 语句。

    此处记录了 CREATE FUNCTION 的详细信息: http://hsqldb.org/doc/2.0/guide/sqlroutines-chapt.html#N12CC4 有一个带有 RETURNS TABLE 的 SQL 函数示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-09
      • 1970-01-01
      • 2012-05-26
      • 1970-01-01
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多