我有一個存儲過程的這樣的樣品(從我以前的工作經驗):「-999」用於所有條件
Select * from table where ([email protected] or id='-999')
基於我對這個查詢理解中,「-999」是用於在用戶沒有傳送值時避免異常。到目前爲止,在我的研究中,我還沒有發現它在互聯網和其他公司實施中的用法。
@id從用戶傳送。
任何幫助將不勝感激,提供一些相關的鏈接。
我有一個存儲過程的這樣的樣品(從我以前的工作經驗):「-999」用於所有條件
Select * from table where ([email protected] or id='-999')
基於我對這個查詢理解中,「-999」是用於在用戶沒有傳送值時避免異常。到目前爲止,在我的研究中,我還沒有發現它在互聯網和其他公司實施中的用法。
@id從用戶傳送。
任何幫助將不勝感激,提供一些相關的鏈接。
我想對此加上我的兩個猜測,但請注意,對於我的缺點,我是該領域中最年輕的一個,所以這不是來自那麼多的歷史或經驗。
此外,請注意,由於任何原因,任何人提供給您,您可能無法100%確認。 Your oven might just not have any leftover evidence in and of itself。
現在,每另一question我以前讀,極端整數是在一些系統中用來表示遺漏值,因爲文本和NULL
不是在這些系統的選項。說我在找ID#84,並在表中我不能找到它:
或許在某些系統中它更可能是一個記錄存在丟失/不正確的ID,而不是根本不存在?因此,當沒有找到匹配的時候,設計師首選所有沒有有效ID的記錄被返回?
然而這有一些問題。首先,根據設計,用戶可能無法識別結果是一組缺少ID的記錄,特別是如果只返回一個記錄。其次,當前查詢帶來一個問題,因爲除了正常匹配之外,它總是會返回缺少的ID記錄。也許他們依靠ORDER
ing來減輕可讀性?
據我所知,SQL是罰款一零行的結果,但調用/使用說不定什麼東西叫它不是健壯的,當返回零行時出現錯誤(硬異常,軟UI錯誤等)?也許那時,這個ID代表了一個虛擬行(,例如空格和零點)以保持運行。
話說回來,這也從上面關於「記錄,總是輸出」相同的參數和ORDER
受苦,與添加的可能性,即SQL,來電者可能有專門的邏輯來當-999記錄是唯一記錄返回,我懷疑這是最實際的方法,即使在這個時代完成的任何時代。
...我越式,我越覺得這是的烤箱,只有曾祖母可以解釋這給我們。
如果你想避免異常,當你的存儲過程中沒有值傳遞給用戶時,聲明參數爲null。像@id int = null
例如:
CREATE PROCEDURE [dbo].[TableCheck]
@id int = null
AS
BEGIN
Select * from table where ([email protected])
END
現在你可以以兩種方式執行:
exec [dbo].[TableCheck] 2
或exec [dbo].[TableCheck]
記住,這是一個獨立的事情,如果你想返回整個表時您的輸入參數爲空。
要回答您的id = -999
條件,我試了一下你的方式。它不會阻止任何異常
我想知道爲什麼它被用在這裏,我在互聯網上搜索它和許多使用它的人不知道原因。 –
@ J.Doe:請發佈您的整個存儲過程以更好地分析它。 –
'-999'只是一個'常數',它們用作默認值以避免exception_。它可以是任何「蘋果」,「芒果」,但應該是「唯一」的同時。在這種情況下,'-999'可能是唯一的,因爲如果用戶輸入值,'id永遠不會是-999。他們本來可以用'-888'或'-1000'也 –
你可以給我提供一些鏈接,我只是想確認一下。感謝您的幫助。 –
我看不出這是如何幫助避免任何異常。 –