我有一個名爲產品表,它具有以下3列:ID,名稱和版本。對於任何給定的行,版本列可能有多個以逗號分隔的版本。我想知道的是,如何在我的Apex應用程序中創建一個包含在LOV中的選擇列表,每個版本由逗號分隔?如何從Oracle Apex的表格單元格中的逗號分隔值列表中選擇列表?
例如,如果我在產品下面一行表:
1 | myProduct | 1.0, 1.1, 1.2
我怎麼能在我的Apex應用程序,它會顯示以下LOV創建一個選擇列表:「1.0」,「1.1 '還是'1.2'?
我有一個名爲產品表,它具有以下3列:ID,名稱和版本。對於任何給定的行,版本列可能有多個以逗號分隔的版本。我想知道的是,如何在我的Apex應用程序中創建一個包含在LOV中的選擇列表,每個版本由逗號分隔?如何從Oracle Apex的表格單元格中的逗號分隔值列表中選擇列表?
例如,如果我在產品下面一行表:
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值修剪空格。)
也許一個很好的問題太多:爲什麼這些值是以逗號分隔的值嗎?爲什麼不在一個表「版本」?也許你只是從現有的代碼庫開始工作,但也許你正在設計數據模型和/或有能力改變它? – Tom
你是對的,但我正在從一個現有的代碼庫開始工作,你知道是否可以在不改變模型的情況下完成一個單獨的版本表? –