06. februar 2001 - 14:33Der er
11 kommentarer og 1 løsning
Recordset versus stored procedures
Jeg har en STORED PROCEDURE (sql ting), some returnerer en mængde data ind til et recordset(rs). Jeg vi nu gerne lave det sådan at jeg kun præsenterer f.eks 10 poster ad gangen . Dette gøres ved at man tæller antallet af poster(for at vide hvor mange sider man skal have)
rs.pagecount
Men dette virker ikke for data retuneret fra en stored procedure. Kun ved et direkte kald fra klienten ,som f.eks \"SELECT * FROM TABLE\"
Jeg SKAL bruge stored procedure, men .PageCount virker ikke.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Prøv at sætte Cursorlocation på din connection til adUseClient (dvs. conn.CursorLocation = adUseClient). Denne feature kan kun bruge hvis cursoren er client side. adUseClient er ifølge adovbs.inc = 3
Set objCmd = Server.CreateObject(\"ADODB.Command\") \' object oprettes Set objCmd.ActiveConnection = Conn \' objectets forbindelse sættes til din connection objCmd.CommandType = adCmdStoredProc \' objectets typer er en stored proc. objCmd.CommandText = \"SKOLE_SP\" \' navnet på din proc. sættes her. Set rs = objCmd.Execute() \' opretter et recordset med resultatet....
ISTEDET. og hvorfor, jo det er fordi at command objected er specielt lavet til sp\'s, så lad være med at eksekver den gennem dit connection objeckt..... Ja det ser ud til at det er som det skal være
Jeg har en gang oplevet at jeg blev nødt til at ændre min connectionstring, da den åbenbart også kan have indflydelse på hvilke funktioner der understøttes. Prøv at lege lidt med connection string. PageCount m.m. er forholdsvis ny. Det kan derfor være at du bliver nødt til at opgradere til en nyere version af ado. Prøv evt. med MDAC 2.6 som kan downloades fra MS. Jeg kunne ikke finde noget på MSDN om i hvilken version paging funktionerne blev implementere, så der må jeg være svar skyldig.
Til KassePer vedr. din crudsade imod exekvering af sp via connection objectet.
Der er intet i vejen for at exekvere en sp via connection object hvis man ikke skal brug parametre. Dette sparer på systemressourcer, idet command objectet kommer med en solidt overhead. Derfro hvis du arbejder med systemer hvor der er mange brugere så håber jeg for din egen og systemets skyld at du også anvender conn.execute. Kunsten er selvfølgelig at vide hvornår man skal bruge command. Sp\'er uden parametre exekverer jeg ALTID via connection. Hvis et id nummer eller to skal sendes med bruger jeg stadig connection. Hvis parametrene indeholder brugerindtastet text så brug command, så behøver du ikke checke for \' og \" m.m. Hvis jeg modtager flere recordset eller output variabler fra sp, så bruger jeg også command.
gandalfthewhite >> Jeg er ikke enig med dig. Hvorledes er der overhead på command objected ? Jeg har aldrig haft nogen problemer med command, heller ikke når jeg eksekvere MEGET tunge select statments, uden parametre....
Du bruger ekstra RAM og ekstra processorkraft på at oprette et command object. Dette betyder at ekskveringen er lidt langsommere.
Det betyder nok ikke det store på en web-server hvor der ikke er så meget tryk på, men hvis der er mange brugere kan uforbeholden brug af unødig overhead være med til at kvæle serveren.
Overhead er derfor ikke relateret til antallet af parametre eller komplexiteten af forespørgslen - som i forhold til command objectet bare er tekst - det er jo sql-server der håndterer selve forespørgslen.
Synes godt om
Ny brugerNybegynder
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.