我已存儲過程來找到客戶,其工作的罰款。如果Customer_City_Name
在表中爲空,那麼我無法檢索該行。 SP失敗。如何做到這一點 我得導致即使Customer_City_Name
或Customer_Country_Code
IS NULL
無法檢索如果表列具有空值
EXEC findCustomer null,'%',null,null,
SP代碼:
CREATE PROCEDURE findCustomer
@customerNumber NVARCHAR(100),
@customerNamePattern NVARCHAR(35),
@customerCityNamePattern NVARCHAR(35),
@customerCountryCode NVARCHAR(5)
AS
BEGIN
DECLARE @SQL NVARCHAR(4000)
SET @SQL =
'
SELECT
c.Customer_Number,
c.Customer_Name,
c.Postal_Address_Identifier,
c.Customer_Street_Or_Road_Name,
c.Customer_City_Name,
c.Customer_Territory_Code,
c.Customer_Postal_Code,
c.Customer_Country_Code,
c.Telephone_Number,
c.Mobile_Telephone_Number,
c.Fax_Number,
c.Email_Address
FROM Customer c
WHERE c.Customer_Number LIKE ' +
CASE WHEN @customerNumber IS NOT NULL
THEN '''' + @customerNumber + ''''
ELSE 'c.Customer_Number'
END + '
AND c.Customer_Name LIKE ' +
CASE WHEN @customerNamePattern IS NOT NULL
THEN '''' + @customerNamePattern + ''''
ELSE 'c.Customer_Name'
END + '
AND c.Customer_City_Name LIKE ' +
CASE WHEN @customerCityNamePattern IS NOT NULL
THEN '''' [email protected] + ''''
ELSE 'c.Customer_City_Name'
END + '
AND c.Customer_Country_Code LIKE ' +
CASE WHEN @customerCountryCode IS NOT NULL
THEN '''' [email protected] + ''''
ELSE 'c.Customer_Country_Code'
END
EXEC sp_executesql @SQL
GEEZ!請**重新格式化**並清理您的文章 - 這是一個巨大的混亂! ***請***突出顯示文本編輯器中的代碼行,然後單擊編輯器工具欄上的「代碼示例」按鈕(「{}」),以良好地格式化和語法突出顯示它! –
您有一個生成動態SQL並執行它的存儲過程。你不能使用參數化查詢嗎?他們不太容易注射。 – jpmc26