我有一個名爲Employee.emp.Language
的表,其中包含可在UI上選擇的語言列表。我無法向此表添加記錄,也無法直接編輯UI來解決我的問題。TSQL在子查詢中的聯盟
我需要一個選項添加到我的查詢,增加了NULL
到我的結果集。這實際上將允許用戶從下拉列表中選擇null
。
DECLARE @nulls AS TABLE (fieldLabel VARCHAR(10) NULL, fieldValue VARCHAR(10)
NULL)
INSERT INTO @nulls(fieldLabel, fieldValue)
VALUES ('NULL', NULL)
SELECT
(
SELECT LanguageName AS FieldLabel,
LanguageID AS FieldValue
FROM Employee.emp.Language
WHERE IsRetired = 0
UNION
SELECT fieldLabel ,
fieldValue
FROM @nulls
FOR XML PATH ('options'), ELEMENTS, TYPE, ROOT ('languages')
)
雖然我的列表中包含null
選項選擇在我的下拉,我有麻煩這段代碼保存到我的存儲過程。
我得到的錯誤是:The FOR XML clause is invalid in views, inline functions, derived tables, and subqueries when they contain a set operator. To work around, wrap the SELECT containing a set operator using derived table syntax and apply FOR XML on top of it.
只要我刪除union
和select
跟隨它,一切工作正常。
我還能怎樣完成增加值到結果集而不將其添加到直接表?
爲什麼必須是 '空'。 NULL =未知。您可以向Employee.emp.Language表中插入一條記錄,其中LanguageName ='Unknown'。 – Wendy
@Wendy - 我無法通過添加此記錄來修改源表。我正在爲一個小型解決方案破解一個解決方案,其中99%的時間,NULL不會是一個可選擇的選項,也不會出現在列表中。 – SBB