05. august 2002 - 07:01Der er
3 kommentarer og 1 løsning
Output fra stored procedure til ASP ?
Jeg har en Stored procedure som beregner og gemmer sit output i en #tmp tabel. Hvis jeg kalder sp fra query analyzer virker det fint og jeg får mit recordset tilbage, men hvis jeg kalder sp fra ASP kommer der intet tilbage når jeg bruger #tmp tabellen. Hvis jeg gemmer resultatet i en normal tabel i sp virker det også fra ASP. Men jeg vil helst bruge en #tmp a.h.t flere brugere samtidig. -- denne virker ikke fra ASP CREATE PROCEDURE [sp_test] AS select * into #tmpresult from table1 select * from #tmpresult return -- denne virker fra ASP CREATE PROCEDURE [sp_test] AS select * from table1 return
min ASP Set Conn = Server.CreateObject ("ADODB.Connection") Conn.Open min_db_connection
strsql = "exec sp_test" set rs = Conn.Execute(StrSQL) response.write rs.fields.count
Den første af dine select statements indeholder to gange select. De returneres begge til det kaldende kode, og desuden returneres information om hvor mange poster, der er berørt af sql-koden. Dette kan ikke altid håndteres simpelt af f.eks. Visual Basic eller ASP.
Det, jeg gør med 'set nocount on' er, at jeg fortæller SQL Serveren, at den skal sk*d* højt og flot på, at der er en klient. Den skal ikke bruge noget output tilbage. Kun det select statement, der skal returnere noget til klienten, skal stå efter en 'set nocount off'.
Om der er yderligere en 'set nocount on' efter den returnerende sql statement, er ligegyldigt. Du kunne godt have lavet en create table #tempresult inden og så efter dit select fra #tempresult have udført en drop table #tempresult. AFAIR bør man ifølge Books Online direkte undgå at lave en select into, da det går ud over performance. Bedre er det at oprette tabellen på forhånd og indsætte med insert ... select.
Ydermere bør du undgå enhver brug af select *, hvis du ikke SKAL bruge samtlige felter i tabellen. Jo flere felter, der skal hentes, jo langsommere.
Hej Benny Tak for svaret, det hjalp at sætte NOCOUNT off. Jeg er godt klar over at SELECT * belaster men i dette tilfælde returneres kun 1 post med 5 felter. Jeg kendte dog ikke til NOCOUNT problematillen. Hilsen Peter Calum
Hej Benny. Også en stor tak herfra - jeg havde præcis samme problem.
En lille tilføjelse: Eventuelle PRINT-sætninger i sp'en skal også fjernes før det virker.
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.