webForumDet fria alternativet

SP valfri inparameter

2 svar · 202 visningar · startad av Brimba

BrimbaMedlem sedan dec. 19992 966 inlägg
#1

Hej!

Jag har en SP

...
@lngObjectID 	INT,
@strIds      	varchar(8000)
...
DECLARE @sql varchar(8000) 
Set @sql=
	'DELETE 
	FROM
		tbln
	WHERE 
		fld1 = '+convert(nvarchar (6), @lngObjectID)+'
		AND
		fld2 IN('+@strIds+')'
	EXEC(@sql)

Problemet är nu att jag vill att strIds skall vara optional och om den inte skickas med så skall inte fld2 tas med i WHEREsatsen

Jag vet att man kan lösa det exempelvis såhär:
Men jag tycker inte lösningen är så snygg :q

...
@lngObjectID 	INT,
@strIds      	varchar(8000) = 'xx'
...
	if (@strIds='xx')
	begin
		Set @sql='this'
	end
	else
	begin
		Set @sql='this and that'
	end
	EXEC(@sql)
LarsGMedlem sedan dec. 200012 465 inlägg
#2
if @strids is not null 
begin 
DECLARE @sql varchar(8000) Set @sql=	'DELETE 	FROM		tbln	WHERE 
		fld1 = '+convert(nvarchar (6), @lngObjectID)+'		AND		fld2 IN('+@strIds+')'
	EXEC(@sql)
else
delete from tbln where fld1 = @lngobjectid

Undvik dynamisk sql om du kan.

BrimbaMedlem sedan dec. 19992 966 inlägg
#3

jag förstår, tackar!

Genererad på 385 ms · cache AV · v20260730165559-full.f96bc7eb