12. september 2005 - 23:34
Der er
16 kommentarer og 1 løsning
Stored procedure til insert - hvad mangler jeg.
Jeg forsøger at indsætte en post i MSSQL som skal have alle værdierne fra variabler fra asp. SP og ASP er vist nedenfor. Det fejler i den første linje med "cmd.Parameters.Append", så jeg gør noget forkert. Hvad er der galt her? Det er muligt jeg er helt gald på den med opbygningen af enten SP eller ASP. CREATE PROCEDURE NavnAdresseInsert @navn nvarchar, @adresse nvarchar, @telefon nvarchar, @email nvarchar, @postnr nvarchar, @bynavn nvarchar, @land nvarchar AS INSERT INTO tblBestillinger (navn,adresse,telefon,email,postnr,bynavn,land) VALUES (@navn,@adresse,@telefon,@email,@postnr,@bynavn,@land) GO <% Set cmd = Server.CreateObject("ADODB.Command") cmd.ActiveConnection = conn cmd.CommandType = adCmdStoredProc cmd.CommandText = "NavnAdresseInsert" cmd.Parameters.Append(cmd.CreateParameter("@navn", adVarChar, adParamInput) cmd.Parameters.Append(cmd.CreateParameter("@adresse", adVarChar, adParamInput) cmd.Parameters.Append(cmd.CreateParameter("@telefon", adVarChar, adParamInput) cmd.Parameters.Append(cmd.CreateParameter("@email", adVarChar, adParamInput) cmd.Parameters.Append(cmd.CreateParameter("@postnr", adVarChar, adParamInput) cmd.Parameters.Append(cmd.CreateParameter("@bynavn", adVarChar, adParamInput) cmd.Parameters.Append(cmd.CreateParameter("@land", adInteger, adParamInput) cmd.Parameters("@navn")="jesper" cmd.Parameters("@adresse")="hansen" cmd.Parameters("@telefon")="86868686" cmd.Parameters("@email")="jesperhansen@mail.com" cmd.Parameters("@postnr")="8000" cmd.Parameters("@bynavn")="Viborg" cmd.Parameters("@stat")="ca" cmd.Parameters("@land")=1 cmd.Execute %>
Annonceindlæg fra Computerworld it-jobbank
12. september 2005 - 23:38
#1
har du defineret ad konstanterne ??
12. september 2005 - 23:44
#2
Nej det tror jeg ikke jeg har. Jeg har ikke andet end det jeg har skrevet her. Jeg er HELT ny med MSSQL :-) og prøver mig bare lidt frem.
12. september 2005 - 23:47
#3
prøv og sæt følgende ind i toppen: adParamInput = 1 adParamOutput = 2 adParamReturnValue = 4 adInteger = 3 adDate = 7 adVarChar = 200 adCmdStoredProc = 4
12. september 2005 - 23:53
#4
Jeg har indsat dem i toppen af asp-klumpen, så den så således ud: <% adParamInput = 1 adParamOutput = 2 adParamReturnValue = 4 adInteger = 3 adDate = 7 adVarChar = 200 adCmdStoredProc = 4 Set cmd = Server.CreateObject("ADODB.Command") cmd.ActiveConnection = conn cmd.CommandType = adCmdStoredProc cmd.CommandText = "NavnAdresseInsert" cmd.Parameters.Append(cmd.CreateParameter("@navn", adVarChar, adParamInput) cmd.Parameters.Append(cmd.CreateParameter("@adresse", adVarChar, adParamInput) cmd.Parameters.Append(cmd.CreateParameter("@telefon", adVarChar, adParamInput) cmd.Parameters.Append(cmd.CreateParameter("@email", adVarChar, adParamInput) cmd.Parameters.Append(cmd.CreateParameter("@postnr", adVarChar, adParamInput) cmd.Parameters.Append(cmd.CreateParameter("@bynavn", adVarChar, adParamInput) cmd.Parameters.Append(cmd.CreateParameter("@stat", adVarChar, adParamInput) cmd.Parameters.Append(cmd.CreateParameter("@land", adInteger, adParamInput) cmd.Parameters.Append(cmd.CreateParameter("@betalingstype", adInteger, adParamInput) cmd.Parameters.Append(cmd.CreateParameter("@notat", adVarChar, adParamInput) cmd.Parameters("@navn")="jesper" cmd.Parameters("@adresse")="hansen" cmd.Parameters("@telefon")="26555592" cmd.Parameters("@email")="jesperhansen@gmail.com" cmd.Parameters("@postnr")="8800" cmd.Parameters("@bynavn")="Viborg" cmd.Parameters("@stat")="ca" cmd.Parameters("@land")=1 cmd.Parameters("@betalingstype")=1 cmd.Parameters("@notat")="dddd" cmd.Execute %> og SP'en: CREATE PROCEDURE NavnAdresseInsert @navn nvarchar, @adresse nvarchar, @telefon nvarchar, @email nvarchar, @postnr nvarchar, @bynavn nvarchar, @stat nvarchar, @land int, @betalingstype nvarchar, @notat ntext AS INSERT INTO tblBestillinger (navn,adresse,telefon,email,postnr,bynavn,stat,land,betalingstype,notat) VALUES (@navn,@adresse,@telefon,@email,@postnr,@bynavn,@stat,@land,@betalingstype,@notat) GO jeg får dog stadig en fejl i linjen: "cmd.Parameters.Append(cmd.CreateParameter("@navn", adVarChar, adParamInput)"
12. september 2005 - 23:55
#5
øh - nu tæller jeg lige parenteser ....
12. september 2005 - 23:55
#6
(()
12. september 2005 - 23:57
#7
ja for søren, jeg tester lige.
13. september 2005 - 00:03
#8
jeg tror parenteserne kom i orden. Nu får jeg en "Illegal assignment: 'adParamInput'" ved linjen: "adParamInput = 1" men jeg har: <!-- #include virtual="/adovbs.inc" --> i toppen, så det er måske en dobbelt deklaration. Når jeg fjerner linjerne med initialiseringen af kontanterne får jeg fejlen: "ADODB.Parameters (0x800A0E7C) Parameter object is improperly defined. Inconsistent or incomplete information was provided." ved linjen: "cmd.Parameters.Append(cmd.CreateParameter("@navn", adVarChar, adParamInput)" Jeg beklager den lange process. Kan jeg for øvrigt tilføje nogle flere point til spørgsmålet?
13. september 2005 - 00:05
#9
ja - så fjerner du de ad konstanter igen
13. september 2005 - 00:06
#10
13. september 2005 - 00:08
#11
har du sat conn ?
13. september 2005 - 00:15
#12
Ja det er så'n her. Jeg kan godt lave SELECTs. Dim conn 'connection object Dim DSN 'connectionstring Set conn=Server.CreateObject("ADODB.Connection") DSN = "Provider=SQLOLEDB.1; Server=mssql.domaene.dk; Database=databasenavn; Uid=brugernavn; Pwd=xxx; Network=DBMSSOCN" conn.open DSN mystisk. Det må være noget med variablerne for det fungerede ok, men SP uden parametre. CREATE PROCEDURE [testproc] AS INSERT INTO tblBestillinger (bestillingID,navn,adresse) VALUES (1,2,3) GO Den kører lige igennem.
13. september 2005 - 20:42
#13
prøv og tilføj længde på dine varchars
13. september 2005 - 20:43
#14
cmd.Parameters.Append(cmd.CreateParameter("@navn", adVarChar, adParamInput, 50)
13. september 2005 - 20:47
#15
ellers prøv enten 1) ændre din SP fra NVARCHAR til VARCHAR eller 2) ændre fra adVarChar til adVarWChar
13. september 2005 - 22:49
#16
Herligt, nu virker det. Det var længden på VarChars, der skulle tilføjes. Alle tiders. Læg lige et svar :-) Tusind tak for hjælpen.
13. september 2005 - 22:52
#17
svar kommer her
Computerworld tilbyder specialiserede kurser i database-management