07. september 2005 - 16:55Der er
10 kommentarer og 1 løsning
IDENTITY i Stored Procedure
Hej,
Jeg sidder og roder lidt med en stored procedure i MS SQL.
Jeg vil gerne gemme en @Identity værdi en variabel som skal bruges "længere nede" i min procedure.
CREATE PROCEDURE min_sp @Rid int OUTPUT AS BEGIN SET @Rid = SELECT @@IDENTITY FROM myTable END
Jeg får fejlen: Incorrect syntax near the keyword 'SELECT'
Det er første gang jeg prøver at bruge @@Identity, så det kan godt være der er noget jeg har misforstået fuldstændig, men syntes bare de google eksempler jeg har fundet har samme syntax?
Arne jeg fik det til at virke med SELECT @Rid = SELECT @@IDENTITY...Jeg troede bare at jeg kunne bruge den på et vilkårligt tidspunkt og så få seneste record retur, men den skal tilsyneladende anvendes i forbindelse med en INSERT.
@@IDENTITY indeholder det sidste identity der er genereret på serveren, så du kan kun bruge den i forbindelse med en INSERT:
INSERT INTO myTable DEFAULT VALUES SELECT @@IDENTITY
- giver altså værdien af en evt. identity-kolonne for den post der netop er oprettet.
@@IDENTITY indeholder det sidste identity der er genereret på serveren! Derfor kan man kun regne med at den er korrekt indenfor en transaction, og så er der vist oven i købet noge med isolation level, som jeg ikke er inde i. Hvis du koder uden at du selv angiver transactions, så vil hele din sp foregå indenfor en transaction.
Derfor bør du altid hente værdien umiddelbart efter din INSERT.
jeg har aldrig set en database hvor den feature ikke er per connection - ellers er den jo næsten ubrugelig
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.