webForumDet fria alternativet

Output genererar "Input"?

8 svar · 339 visningar · startad av Jesper T

Jesper TMedlem sedan nov. 20017 058 inlägg
#1

Varför måste jag ange en inparameter på denna OUTPUT?

ALTER PROCEDURE suv_setget
	(
/* Deklarera outputvariabel */
	@guid uniqueidentifier OUTPUT
	)
AS
/* Sätt in en ny post */
	INSERT into SecUploadValider (suv_datetime) Values (GETDATE())
/* Hämta senaste posten och lägg in guid i outputvariabeln*/
	SELECT @guid=suv_guid from SecUploadValider where suv_id = @@identity

RETURN
LarsGMedlem sedan dec. 200012 465 inlägg
#2

vad menas? I vilket sammanhang måste du ange en input parameter?

Jesper TMedlem sedan nov. 20017 058 inlägg
#3

När jag kör den i access så kräver den inparameter av mig.

Jesper TMedlem sedan nov. 20017 058 inlägg
#4

Alltså det är ingen Access SP utan en MS Sql
Jag bara kör den via Access.

LarsGMedlem sedan dec. 200012 465 inlägg
#5

Det låter mer som ett fel i Access. Svårt att göra något åt i så fall.

Jesper TMedlem sedan nov. 20017 058 inlägg
#6

OK

tohaMedlem sedan dec. 1999698 inlägg
#7

Ett litet tips: undvik helst @@identity i SqlServer, andvänd heller SCOPE_IDENTITY().

Jesper TMedlem sedan nov. 20017 058 inlägg
#8

toha skrev:

Ett litet tips: undvik helst @@identity i SqlServer, andvänd heller SCOPE_IDENTITY().

Varför är det bättre?

tohaMedlem sedan dec. 1999698 inlägg
#9

Både SCOPE_IDENTITY() och @@identity returnerar senaste identity inom den aktuella sessionen men SCOPY_IDENTITY() returnerar för den aktuella queryn, stored proceduren, triggern etc.

Ett scenario skulle kunna vara att du har en insert-trigger på en tabell som lägger in värden i en annan tabell. Då returnerar @@identity id:t för den andra tabellen.

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