2010-09-24 55 views
0

我有一個表值函數,需要三個參數。內嵌表值函數的變量

如果任何傳入的參數是空白我需要將參數分配給null。請任何人都可以告訴我如何/在哪裏可以把下面的條件放在函數中。

IF @CLIENTPK_NEW = '' 
BEGIN 
@CLIENTPK_NEW=NULL 
END 

IF @CGNEEPK= '' 
BEGIN 
@CGNEEPK=NULL 
END 


CREATE FUNCTION Function_test 
(  
@CLIENTPK_NEW varchar(50),  
@CGNEEPK varchar(50),  
@type varchar(100) 
) 
RETURNS TABLE  
AS  

RETURN 

SELECT COl1,COl2 
FROM Table1 
where COL1 is not null AND 
(@CLIENTPK_NEW IS NULL OR COL1 [email protected]_NEW) AND 
(@CGNEEPK IS NULL OR COL2 [email protected]) 

回答

1

您可以使用NULLIF

SELECT COl1,COl2 
FROM Table1 
where COL1 is not null AND 
(NULLIF(@CLIENTPK_NEW, '') IS NULL OR COL1 = NULLIF(@CLIENTPK_NEW, '')) AND 
(NULLIF(@CGNEEPK, '') IS NULL OR COL2 = NULLIF(@CGNEEPK, '')) 

但是,如果這是一個從your previous question遵循,請參閱我的答案在那裏,因爲我不認爲你需要這種解決方法如果是這樣的我在那裏演示的這個特定問題的來源,可以直接傳遞NULL。