我有以下的UDF。SQL爲什麼不能讓我選擇一個空值和一個值?
CREATE FUNCTION [dbo].[udf_GenerateVarcharTableFromStringList]
(@list varchar(MAX),
@delimiter char(1) = N',')
RETURNS @tbl TABLE ([Value] varchar(200))
WITH SCHEMABINDING
AS
BEGIN
DECLARE @chrind INT
DECLARE @Piece nvarchar(4000)
SELECT @chrind = 1
WHILE @chrind > 0
BEGIN
SELECT @chrind = CHARINDEX(@delimiter,@list)
IF @chrind > 0
SELECT @Piece = LEFT(@list,@chrind - 1)
ELSE
SELECT @Piece = @list
INSERT @tbl([Value]) VALUES(@Piece)
SELECT @list = RIGHT(@list,LEN(@list) - @chrind)
IF LEN(@list) = 0 BREAK
END
RETURN
END
我在存儲過程調用與下面的代碼示例這個函數從where子句:
WHERE u.[Owner] IN
(SELECT [VALUE]
FROM dbo.udf_GenerateVarcharTableFromStringList(@Owners, ','))
我用這個地方的,我使用的報告服務,多值參數的存儲過程的語句。當用戶爲該值選擇空白時,它會返回正確的數據,但如果用戶選擇空白值和另一個實際上具有文本的值,則不會返回空白值的所有者,只是文本的所有者?有任何想法嗎?我認爲功能有問題嗎?
一個簡單的拆分功能的好名字! – 2010-09-08 15:35:15
'但如果用戶選擇一個空白值和另一個值actualyl有文本它不會返回空白值的所有者'我不明白。 – 2010-09-08 15:37:14
在這兩種情況下,哪些作爲參數傳遞給函數? (使用SQL事件探查器查明你是否不知道)除非選擇了其他選項,否則RS默認會自動發送完整列表。 – 2010-09-08 15:37:53