Just nu i M3-nätverket
Jump to content

ASP och SQL Server


Nenna

Recommended Posts

Hur gör man för att tömma en variabel som man deklarerat i en Stored Provedure?

Ska köra en stored procedure flera gånger men när den körs andra gången blir det fel.

Har provar Set @variabel = Null men det funkar inte.

Link to comment
Share on other sites

Eftersom SP:n körs en gång så borde det inte vara nåt fel där...

 

Så här ser Loopen ut som kör och skickar parametern:

For x = 1 To Request.Form("ID").Count

 

cmd.Parameters.Append(cmd.CreateParameter("ID",3,1,0,Request.Form("ID")(x)))

 

cmd.CommandText = "Delete_Mkv"

cmd.Execute(4)

 

Next

 

Jag har skrivit ut variablerna så jag ser att det blir rätt variabel. Första posten raderas men när den ska köras andra gången står det:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

 

[Microsoft][ODBC SQL Server Driver]

Procedure 'Delete_Mkv' expects parameter '@ID', which was not supplied. 

 

Vilket betyder att det är nåt fel på värdet i parametern eller i själva SP:n

 

Hjälp!

 

 

Link to comment
Share on other sites

Jonas menar att du måste döpa variabeln till @ID även när du skapar parametern:

 

cmd.Parameters.Append(cmd.CreateParameter("@ID",3,1,0,Request.Form("ID")(x)))

Link to comment
Share on other sites

Näe, grabbar eftersom den körs en gång så är det inte det som är felet. När man skickar parametern döper man den till det man skriver inom snuffar. I själva SP:n tar man emot och deklarerar variabeln så här: @ID int,

(eller vad man nu döpte den till när man skickade parametern.)

 

Jonas eftersom den körs en gång så kommer det in ett värde. Jag kan engelska så jag förstår fel meddelandet.

Oavsett vad det är för fel i SP:n så får man det fel meddelandet. Så nu vet du det.....

 

Det är nåt annat som är fel...

Link to comment
Share on other sites

Hej,

 

ok, jag ger mig fortfarande inte utan menar:

 

cmd.Parameters.Append(cmd.CreateParameter("@ID",3,1,0,Request.Form("ID")(x)))

 

Du måste döpa din variabel till @variabelnman även när du skapar parameterobjectet. Att den SP fungerar en gång kan bero på att du har ett default värde för inparametern @ID

 

Dessutom måste du förstöra ditt Parameterobject mellan anropen, annars blir den bara längre och längre.

[inlägget ändrat 2000-07-27 14:29:28 av foo]

Link to comment
Share on other sites

Okej, men det blir inte bättre när jag skriver så.... samma fel.

 

Förstöra? Hur menar du?

Jag har försökt att nollställa variabeln, att det kan bero på det.

 

Du verkar ju vara haj på det här. (Tyckte bara att Jonas var lite kaxig.)

 

/Jennie

Link to comment
Share on other sites

Om din kod ser ut som du skrev innan så antar jag att felet är att du skapar samma parameter flera gånger, alltså fattar inte SPn vilken den ska använda (lite störigt felmeddelande dock). Lägg .Append-koden utanför loopen och kör istället denna kod inuti den:

 

cmd.Parameters("ID") = variabeln

 

Jag håller dock med om att du bör döpa variabeln till @ID, redan i command-objektet, 'för säkerhets skull'...

 

 

 

[inlägget ändrat 2000-07-27 15:23:15 av DrPepper]

Link to comment
Share on other sites

lol jag ger upp ;)

 

om du kör enbart DrPeppers variant så kommer det att fungera.

 

Brynges variant kan du köra om du fortfarande vill ha kvar parameterobjektet i loopen.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...