我有一个名为Products的表,它有以下 3 列:ID、Name和Versions。对于任何给定的行,Versions列可能有多个以逗号分隔的版本。我想知道的是如何在我的 Apex 应用程序中创建一个选择列表,该列表将包含在它的 LOV 中,每个版本都用逗号分隔?
例如,如果我在Products表中有以下行:
1 | myProduct | 1.0, 1.1, 1.2
如何在我的 Apex 应用程序中创建一个显示以下 LOV 的选择列表:“1.0”、“1.1”或“1.2”?
我有一个名为Products的表,它有以下 3 列:ID、Name和Versions。对于任何给定的行,Versions列可能有多个以逗号分隔的版本。我想知道的是如何在我的 Apex 应用程序中创建一个选择列表,该列表将包含在它的 LOV 中,每个版本都用逗号分隔?
例如,如果我在Products表中有以下行:
1 | myProduct | 1.0, 1.1, 1.2
如何在我的 Apex 应用程序中创建一个显示以下 LOV 的选择列表:“1.0”、“1.1”或“1.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 可以告诉您!
假设您使用的是简单表格,而不是表格表格,那么您可以这样做:
STATIC2:&P1_VERSIONS.
(您可能需要从存储在 P1_VERSIONS 中的值中删除空格。)