Avatar billede eyes Nybegynder
06. august 2004 - 10:18 Der er 8 kommentarer og
1 løsning

Parameter syntax til Stored Procedure (SQL server 2000)

Hvordan er syntaksen når man sender parametre fra ASP til en Stored Precedure med ASP.

I mit tilfælde skal jeg have sendt null som variabel da jeg tjekker op på denne på serveren og ikke som en tekststring.

If shopID = 0 then
shopID = null
end if

If Btekst = "" then
Btekst = null
end if

rs1 = myConn.execute( "Exec Soeg '"& Btekst &"' , '"& shopID & "'")

Når jeg udskriver sætningen kan jeg se at null ikke bliver sat ind den viser bare
Exec Soeg '' , ''

nogen der ved hvordan løser dette?
Avatar billede ldanielsen Nybegynder
06. august 2004 - 10:32 #1
If shopID = 0 then
shopID = "null"
end if

If Btekst = "" then
Btekst = "null"
end if

- vil nok virke bedre
Avatar billede eyes Nybegynder
06. august 2004 - 10:37 #2
ja, men ved du om man skal have  'udenom' ,  eller skal det fjernes så det kun er komma der adskiller?
Avatar billede eyes Nybegynder
06. august 2004 - 10:41 #3
det er jo fordi SQL serveren skal opfatte null som en variable og ikke et stykke tekst
Avatar billede ldanielsen Nybegynder
06. august 2004 - 10:49 #4
Åhja!!!

If shopID = 0 then
  shopID = "null"
end if

If Btekst = "" then
  Btekst = null
else
  Btekst = "'" & Btekst "'"
end if

rs1 = myConn.execute( "Exec Soeg " & Btekst & ", " & shopID )

Jeg går udfra at shopID er et tal
Avatar billede eyes Nybegynder
06. august 2004 - 13:07 #5
det virker næsten nu,

du ved ikke hvad man skal skrive inde i stored procedure for at rekordsættet modtager resultatet korrekt

jeg har tjekket op om de sendte informationer på serveren fungerer, det gør de hvis jeg tester i  SQL Query Analyzer.

Fejlen jeg får i ASP er nu følgende

Error Type:
ADODB.Recordset (0x800A0E78)
Operation is not allowed when the object is closed.

og jeg har ikke lukket sættet
Avatar billede ldanielsen Nybegynder
06. august 2004 - 13:23 #6
Du vil altså have et recordset ud af din stored procedure, det kan man godt, men jeg har ikke selv brugt det. Giv mig et øjeblik
Avatar billede ldanielsen Nybegynder
06. august 2004 - 13:31 #7
Du må vise mig asp'en, det er der fejlen er (tror jeg)
Avatar billede eyes Nybegynder
06. august 2004 - 13:44 #8
Det er faktisk ret simpelt

sub search()

Dim ShopID, Btekst

If shopID = 0 then
  shopID = "null"
end if

If Btekst = "" then
  Btekst = null
else
  Btekst = "'" & Btekst "'"
end if

rs1 = myConn.execute( "Exec Soeg " & Btekst & ", " & shopID )

do while not rs1.EOF
           
Mit indhold hvor jeg udskriver tabeller og indhold

Loop

rs1.close

set rs1=nothing

end sub


-----------


men så vidt jeg ved er det noget med at det er den SP sender antal fundne først og derefter sender den posterne, er dette rigtigt
Avatar billede ldanielsen Nybegynder
06. august 2004 - 13:57 #9
Prøv med

SET rs1 = myConn.execute( "Exec ...

Nej, det er ikke det med at den sender antal fundne først. Jeg går udfra at det sidste statement i din sp er en SELECT?

Du har vel en rs1.MoveNext i loop'et? og ingen rs1.close i loop'et


Og lige et PS: Din ADO syntaks er en smule forenklet, se her:'

Set myConn = Server.CreateObject("ADODB.Connection")

myConn.Open ConnectionString

Set Com = Server.CreateObject("ADODB.Command")
Set rs1 = Server.CreateObject("ADODB.Recordset")

Com.ActiveConnection = myConn

Dim ShopID, Btekst

If shopID = 0 then
  shopID = "null"
end if

If Btekst = "" then
  Btekst = null
else
  Btekst = "'" & Btekst "'"
end if

Com.CommandText = "Exec Soeg " & Btekst & ", " & shopID


rs1.Open Com, , 0, 1

blabla



rs1.Close
Set rs1 = nothing
Set Com = nothing
myConn.Close
Set myConn = nothing
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
Kurser inden for grundlæggende programmering

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