Avatar billede jm2 Nybegynder
31. oktober 2000 - 18:57 Der er 9 kommentarer og
1 løsning

recordset-ting i stored procedure

Kan man inde i en stored procedure lave et udtræk(recordset-ting) og så gennemløbe det.

noget alá :


create procedure test @id

declare @rsting ??

select @rsting = (select * from tbl where id = @id)

while not @rsting.eof

opbyg den tabel der skal sendes tilbage

@rsting.movenext
wend


Håber i forstår spørgsmålet..
Avatar billede hatecaps Nybegynder
31. oktober 2000 - 19:45 #1
lytter med ...
Avatar billede frylund Nybegynder
01. november 2000 - 23:09 #2
Sure, du kan lave en proc med en cursor i - (se flere kommentare i koden)

create proc test (
  @id int
) as begin

-- opret cursor, her som insensitive, men
-- kan også oprettes som \'scroll\' hvor du
-- så kan bruge flere \'fetch\' funktioner
-- kig i books online
  declare jm2Cur insensitive cursor
  for
    select kol1, kol2, kolN
    from tbl
    where
      id = @id
  open jm2Cur
  fetch next into @kol1Var, @kol2Var, @kolNVar
  while (@@FETCH_STATUS=0)
  begin
    -- lav din behandling af hver række
    -- fra din query, og indsæt i den tabel
    -- som du så vil lagre dit resultat i,

    fetch next into @kol1Var, @kol2Var, @kolNVar
    continue -- fortsæt while løkke
  end
  close jm2Cur
  deallocate jm2Cur

  -- nu står du så med din tabel med data i,
  -- her kan du så selecte fra den og
  -- sende \"tilbage\".

end -- proc
go

Nu ved jeg ikke lige hvad du mener med at \"sende tilbage\", men hvis det er som resultat til en asp ting eller lign, så skal du bare selecte fra den som f.eks. sådan her:

select kol1 \'DitNavnForKol1\'
from dintabel

Held og lykke!
Avatar billede jm2 Nybegynder
02. november 2000 - 09:14 #3
tak for svaret
Avatar billede jm2 Nybegynder
02. november 2000 - 15:03 #4
øøhh kig i books online ????
Avatar billede frylund Nybegynder
02. november 2000 - 15:07 #5
Dokumentationen der følger med mssql...
Avatar billede jm2 Nybegynder
02. november 2000 - 15:09 #6
lol    OK!
Avatar billede jm2 Nybegynder
02. november 2000 - 15:16 #7
Jeg får følgende fejl :

Server: Msg 16916, Level 16, State 1, Procedure admtree, Line 24

koden er :


CREATE PROCEDURE admtree AS

DECLARE @mainparent int
SELECT @mainparent = 161

CREATE TABLE #tmp_tbl ( [id] int, gruppenavn varchar(250), mnulevel int, prioritet int)

-- opret cursor, her som insensitive, men
-- kan også oprettes som \'scroll\' hvor du
-- så kan bruge flere \'fetch\' funktioner
-- kig i books online
  declare @id int
  declare @gruppenavn int
  declare @mnulevel int
  declare @prioritet int

  declare jm2Cur insensitive cursor
  for
    select [id], gruppenavn, mnulevel, prioritet
    from grupper
    where
      id = @mainparent
  open jm2Cur
  fetch next into @id, @gruppenavn, @mnulevel, @prioritet
  while (@@FETCH_STATUS=0)
  begin

  insert into #tmp_tbl ([id], gruppenavn, mnulevel, prioritet) VALUES (@id, @gruppenavn, @mnulevel, @prioritet )

    fetch next into @id, @gruppenavn, @mnulevel, @prioritet
    continue -- fortsæt while løkke
  end
  close jm2Cur
  deallocate jm2Cur


SELECT * FROM #tmp_tbl

DELETE #tmp_tbl

Avatar billede jm2 Nybegynder
02. november 2000 - 15:22 #8
har ændret :
declare @gruppenavn int
til
declare @gruppenavn varchar(250)

men det ændrer ikke noget, får stadig :
Server: Msg 16916, Level 16, State 1, Procedure admtree, Line 24
A cursor with the name \'next\' does not exist.
Avatar billede frylund Nybegynder
02. november 2000 - 15:51 #9
Det er mig der har bøffet iden - hey sådan går det jo når man tager syntaxen fra bio lageret 8-)

Du skal angive hvilken cursor du vil fetche fra:

fetch next from jm2Cur into @.....

Avatar billede jm2 Nybegynder
02. november 2000 - 16:06 #10
okay tak
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
Computerworld tilbyder specialiserede kurser i database-management

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