Just nu i M3-nätverket
Gå till innehåll

ASP och SQL Server


Nenna

Rekommendera Poster

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.

Länk till kommentar
Dela på andra webbplatser

Hej,

 

En variabel initieras alltid vid declare och sätts då till NULL. Det är nog fel någonannanstans.

 

Länk till kommentar
Dela på andra webbplatser

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!

 

 

Länk till kommentar
Dela på andra webbplatser

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)))

Länk till kommentar
Dela på andra webbplatser

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...

Länk till kommentar
Dela på andra webbplatser

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]

Länk till kommentar
Dela på andra webbplatser

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

Länk till kommentar
Dela på andra webbplatser

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]

Länk till kommentar
Dela på andra webbplatser

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.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...