Avatar billede lordnelson Seniormester
20. februar 2013 - 09:32 Der er 19 kommentarer og
1 løsning

kald af STORED PROCEDURE - parameter

he
Hvis jeg i asp har en alm. kald af en forespørgsel vedhjælpe af ADO:
Såsom "Select * from tal where tabelid = " & tabelid &""
Hvordan kan jeg så lave dette op til at kalde en stored procedure
rs.open"Gemtprocedure --- og hvad så med parameter "

Tak
Avatar billede lordnelson Seniormester
20. februar 2013 - 09:43 #1
Glemte at skrive at der i  "gemtprocedure" er oprettet et filter på Tabelid
Avatar billede hnteknik Novice
20. februar 2013 - 11:06 #2
Hej lordnelson:


Jeg viser dig gerne, hvordan du kalder en Stored procedure i ASP med parameteroverførsel.

Jeg kommer dog først i nærheden af min kode i aften.
Avatar billede lordnelson Seniormester
20. februar 2013 - 11:30 #3
Nice tak , har fundet noget på nettet , men de eksempler jeg finder , skal jeg lave det om, og kan ikke bruge feks. rs.open "bla bla" og det vil jeg være lidt træt af, men skal jeg lave det hele om må jeg jo gøre det
Avatar billede hnteknik Novice
20. februar 2013 - 12:32 #4
En Stored Procedure gemmes jo på SQL serveren under et navn.
kaldet fra ASP er blot til navnet med en overført parameter.

Du får et syntaks eksempel, når jeg når tilbage til min kode.

Skal du også have et eks. på, hvordan selve Stored Procedure skal se ud ?

mht overførsel af parameter.
Avatar billede lordnelson Seniormester
20. februar 2013 - 16:51 #5
Hejsa
På forhånd tak
Nej behøves ikke har lavet en på serveren med filter , der virker når jeg kører den fra sql serveren af
Altså filteret er @kategoriid
Avatar billede hnteknik Novice
20. februar 2013 - 20:20 #6
OK, her er et typisk kald fra et af mine bookingsites:

if BehGrpID= "" then
            BehGrpID= "1"
        end if
       
        sql = "exec XXX_BookingsDates2 @intFirmaID = " &  intCompanyID  & ",    @intBehGrpID  =" &  BehGrpID

        set conn = CreateObject("ADODB.Connection")
        conn.open DBConn
        set objRs = conn.execute(sql)

        If objRs.Eof Then
            Response.Write("Ingen ledige datoer.")
        Else
Avatar billede lordnelson Seniormester
20. februar 2013 - 20:36 #7
Ok så @intFirmaID  = filter felt i prceduren ?
og  &  intCompanyID  & = variabel yes ?
Avatar billede hnteknik Novice
21. februar 2013 - 16:52 #8
ja de er begge hvad du kalder filtre eller bedre conditions. Men det er måden du overfører data til Stored Procedure, som kan udføre mange andre opgaver end blot et view.

I dette eks. er det blot en bestemt gruppe = massører som arbejder med et bestemt firma og returnerer de datoer, som man kan booke.
Avatar billede lordnelson Seniormester
21. februar 2013 - 17:25 #9
Yes yes det virker sgu ------- mange tak for hjælpen, der røg en sten fra brystet -- siger rigtig mange  gange tak
Avatar billede hnteknik Novice
22. februar 2013 - 08:17 #10
Velbekommen
Avatar billede arne_v Ekspert
23. februar 2013 - 04:15 #11
????

Saadan kalder man ikke en SP fra ASP.

Set con = Server.CreateObject("ADODB.Connection")
con.Open "en eller anden connection string"
Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = con
cmd.CommandType = adCmdStoredProc
cmd.CommandText = "navn_paa_sp"
cmd.Parameters.Append(cmd.CreateParameter("@navn_paa_param", adInteger, adParamInput))
cmd.Parameters("@navn_paa_param").Value = value_som_skal_bruges
Set rs = cmd.Execute
Avatar billede lordnelson Seniormester
23. februar 2013 - 09:37 #12
JA den havde jeg set på nettet , men den lortet virker så ?
Avatar billede arne_v Ekspert
23. februar 2013 - 14:43 #13
SQL injection, navne med quotes i, dato formater etc.
Avatar billede lordnelson Seniormester
23. februar 2013 - 15:04 #14
Ok kan det være grund til at denne virker:
ALTER PROCEDURE dbo.tilforside
(@katid int)
AS SELECT DISTINCT Kategori, Varebetegnelse, aftekst, varighed, beskrivelse, priser, hovedpunkter, Start, Slut, forudsætninger, afpris, kursustype, katId
FROM          dbo.q_til_forside
WHERE      (katId = @katid)
ORDER BY Varebetegnelse
Men denne virker ikke
ALTER PROCEDURE dbo.it_tiliframe
(@kursusid int)
AS SELECT DISTINCT aftekst, varighed, beskrivelse, priser, hovedpunkter, Kategori, Start, Slut, forudsætninger, afpris, kursustype, Varebetegnelse, kursusId
FROM          dbo.q_til_forside
WHERE      (kursusId = @kursusid)

- der kommer ikke noget output , ingen fejl men intet outout, kun hvis jeg ændrer det fra adCmdStoredProc , til acCmdText i asp siden
Avatar billede lordnelson Seniormester
23. februar 2013 - 16:58 #15
Hej arne, skal nok oprette et nyt indlæg så du kan få point
men hvis jeg bruger
cmd.Parameters.Append(cmd.CreateParameter("@navn_paa_param", adInteger, adParamInput))
cmd.Parameters("@navn_paa_param").Value = value_som_skal_bruges

Skal jeg så ikke lave parameter i selve SP , tænkte mere på Append parameter
Så kan jeg bruge den samme SP med forskellige parameter
Avatar billede arne_v Ekspert
23. februar 2013 - 19:26 #16
Antal parametre og navne i SP og i ASP kode skal matche.
Avatar billede lordnelson Seniormester
23. februar 2013 - 19:28 #17
Ok forstået
Avatar billede hnteknik Novice
23. februar 2013 - 20:11 #18
Der findes jo andre måder at sikre sig mod SQL Injection,men klart det er den sikre måde at gøre det på.

Jeg har andre funktioner, som fanger de klovne, som forsøger sig med bl.a. SQL Injection og det er ikke så få, der er røget i nettet.
Avatar billede lordnelson Seniormester
24. februar 2013 - 09:41 #19
Ok kommer til den sidste linje i denne kode:
Set con = Server.CreateObject("ADODB.Connection")
con.Open Application("sql")
Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = con
cmd.CommandType = adCmdStoredProc  ' den her melder fejl

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
Avatar billede lordnelson Seniormester
24. februar 2013 - 09:53 #20
Ups undskyld har fundet fejlen
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