0

我有一个名为Products的表,它有以下 3 列:IDNameVersions。对于任何给定的行,Versions列可能有多个以逗号分隔的版本。我想知道的是如何在我的 Apex 应用程序中创建一个选择列表,该列表将包含在它的 LOV 中,每个版本都用逗号分隔?

例如,如果我在Products表中有以下行:

1 | myProduct | 1.0, 1.1, 1.2

如何在我的 Apex 应用程序中创建一个显示以下 LOV 的选择列表:“1.0”、“1.1”或“1.2”?

4

2 回答 2

2

当然有可能。请注意,选择列表希望您以行的形式返回数据,因此我们需要将连接的字符串转换为行。我个人喜欢使用 XML 来做到这一点:

SELECT trim(val)
FROM 
  xmltable('/root/e/text()' passing XMLTYPE('<root><e>'
  || REPLACE('1.1, 1.2, 1.3, 1.4',',','</e><e>')
  || '</e></root>') columns val VARCHAR2(50) path '/' )

将返回

TRIM(VAL)
---------
1.1
1.2
1.3
1.4

所以你可以像这样应用它:

WITH prd_versions AS (
  SELECT versions FROM products WHERE id = :PX_PRODUCT_ID
)
SELECT trim(val)
FROM prd_versions p,
  xmltable('/root/e/text()' passing XMLTYPE('<root><e>'
  || REPLACE(p.v,',','</e><e>')
  || '</e></root>') columns val VARCHAR2(50) path '/' )

当然,还有其他方法可以将字符串拆分为行,快速的 Google 可以告诉您!

于 2013-04-18T14:17:15.400 回答
1

假设您使用的是简单表格,而不是表格表格,那么您可以这样做:

  1. 创建一个隐藏项来保存列 product.versions 的值,例如 P1_VERSIONS。
  2. 将选择列表的“值定义列表”设置为:STATIC2:&P1_VERSIONS.

(您可能需要从存储在 P1_VERSIONS 中的值中删除空格。)

于 2013-04-22T16:22:30.630 回答