Avatar billede CCH Nybegynder
06. december 2010 - 19:41 Der er 2 kommentarer og
1 løsning

Hente records fra Stored Procedure

Jeg har oprettet en stored procedure med følgende grundstruktur:
SET NOCOUNT ON;
declare @x varchar(50)
declare @y int

CREATE TABLE #TempTable(.....
)
CREATE TABLE #TempTableXXX(...)

INSERT INTO #TempTableXXX()
SELECT ... FROM ... WHERE ...

While Exists(SELECT TOP 1 * FROM #TempTableXXX
begin
set @x = (SELECT TOP 1 ... FROM #TempTableXXX)
Set @y = (SELECT Count(*) FROM ... INNER JOIN ... on ... = ... WHERE ... = @x)
   
SET ROWCOUNT @y
INSERT INTO #TempTable(...)
SELECT      ... WHERE  ... AND ... = @x
DELETE FROM #TempTableXXX WHERE  ... = @x
set rowcount 0
end

SELECT ... FROM ...inner join #TempTable on ...where ...
   
drop table #TempTable
drop table #TempTableXXX

Den virker perfekt efter hensigten, men problemet er, at det system der skal modtage de returnerede records, kun kan benytte et view. Jeg kan ikke se hvordan jeg skal få et view til at læse records fra en stored procedure, men måske er der en der kan hjælpe?
Avatar billede hrc Mester
06. december 2010 - 20:27 #1
Kan du ikke lave det som en funktion af typen der afleverer et datasæt? Altså noget med select dbo.MyFunf(<parametre>). Hvis ikke du render ind i problemerne med at eks. GetDate() ikke dur i en funktion, så burde det være en pæn løsning.

... eller hur?
Avatar billede CCH Nybegynder
06. december 2010 - 21:22 #2
Jeg lavede en funktion i stedet for og den ser ud til at virke fint. Der var heldigvis ikke brug for noget der ikke virker i en funktion. I stedet for create #TempTable benyttes declare @TempTable Table. Vil du have point?
Avatar billede CCH Nybegynder
05. januar 2011 - 08:45 #3
Jeg lukker tråden
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