Avatar billede lklingenberg Nybegynder
02. november 2005 - 15:33 Der er 3 kommentarer og
2 løsninger

Indsæt med parametre og @@identity i samme sp

Hi E,

Jeg har et asp-script der indsætter en ny entry i en database:
Dim oCmd
Set oCmd = Server.CreateObject("ADODB.Command")
Set oCmd.ActiveConnection = oConn
oCmd.CommandText = "procTest"
oCmd.CommandType = adCmdStoredProc
oCmd.Parameters.Append = oCmd.CreateParameter("@Noget", adVarChar, adParamInput, 10, "noget")
oCmd.Parameters.Append = oCmd.CreateParameter("@Andet", adVarChar, adParamInput, 10, "andet")

Jeg vil nu gerne have @@idendtity tilbage og i stedet for at oprette et nyt recordset med SELECT @@identity... tænkte jeg, at jeg kunne anvende RETURN @@identity i selve procTest og så anvende:
oCmd(0).Direction = adParamReturnValue
til at hente værdien

Men dette virker ikke... Hvis jeg anvender oCmd(0) får jeg godt nok @@identity værdien, men det indsættes ikke noget i den oprettede entry - de overførte værdier for @Noget og @Andet sættes ikke ind i databasen.

Sletter jeg derimod linjen med oCmd(0) sættes tingene fint ind i tabellen, men jeg får selvsagt ikke @@identity tilbage.

Sker der en forstyrrelse af værdierne, når man blander oCmd.Parameter.Append og oCmd(0).Direction?
Avatar billede dr_chaos Nybegynder
02. november 2005 - 15:40 #1
lav en output parameter også efter din insert kommando.
Bruger du
SET @Variabelnavn = @@IDENTITY.
Avatar billede arne_v Ekspert
02. november 2005 - 15:41 #2
bruger du ikke

cmd.Parameters.Append(cmd.CreateParameter("@retval", adInteger, adParamReturnValue));

og

cmd.Parameters("@retval").Value
Avatar billede lklingenberg Nybegynder
02. november 2005 - 15:55 #3
Ahemn, selvfølgelig skulle jeg jo bruge samme konstruktion som med input parametrene, blot men adParamReturnValue i stedet.

dr_chaos satte mig på sporet, arne_v gav mig resten. I deler i porten, hvis I giver svar.

Tak for det!
Avatar billede arne_v Ekspert
02. november 2005 - 15:57 #4
:-)
Avatar billede dr_chaos Nybegynder
02. november 2005 - 16:08 #5
:-) <-- copycat :)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester