webForumDet fria alternativet
Logga in / Bli medlem

SP valfri inparameter

Databaser & SQL

2 svar · 202 visningar · startad av Brimba

Medlem sedan dec. 19995 874 inlägg
Frågan#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)
Medlem sedan dec. 200012 464 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.

Medlem sedan dec. 19995 874 inlägg
#3

jag förstår, tackar!

287 ms totalt · 4 externa anrop · v20260731065814-full.14655e19
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
163 ms — hämta tråd, inlägg och bilagor (db)
116 ms — ändringar (db)