Avatar billede shm1976 Nybegynder
18. september 2003 - 13:16 Der er 7 kommentarer og
1 løsning

stored procedure temporær tabel

Hej

Vi har oprette en stored procedure, som undervejs danner en temporær tabel. Og i den forbindelse anvendes en select sætning til at udvælge data til dennne tabel. Når den nævnte stored procedure køres i Query Analyser returneres det rigtige dataset, men ved afvikling under asp returneres det første dataset (altså den temporære tabel).

Vi kalder den stored procedure ved :

set rs = connection.execute("Exec webtop_igangsaetter '" & mask_id & "','" & vals &"'")


Stored procedure:

CREATE PROCEDURE WebTop_Igangsaetter (

    @LineID varchar(4),
    @ValsePeriode varchar(12)

) AS


CREATE TABLE #SD (
    TaskID varchar(24)
)

INSERT INTO #SD
SELECT TaskID FROM Metocs_data.dbo.workchk WHERE (checkcode <> '379') AND (checkobject = '63')


SELECT --DISTINCT TOP 15
manperi_period.period,
manperi_period.tubeline,
ISNULL(#SD.taskid, 0) AS SD
.....
Avatar billede shm1976 Nybegynder
18. september 2003 - 13:17 #1
Spørgsmålet er selvfølgelig - hvorfor returneres temporær tabel ?
kan det evt. undgåes ved at kalde den stored procedure på anden vis....
Avatar billede ocp Nybegynder
18. september 2003 - 13:39 #2
Der findes, så vidt jeg husker, en kommando på recordset-objektet der hedder NextRecordset - prøv lige den.
Avatar billede shm1976 Nybegynder
18. september 2003 - 13:50 #3
ved kald af NextRecordSet 1 gang får jeg følgende
Error Type:
Microsoft OLE DB Provider for SQL Server (0x80004005)
Invalid object name '#SD'.
/simplex/rørproduktion/igang_saetter.asp, line 65

ved kald af NextRecordSet 2 gange får jeg følgende

Error Type:
ADODB.Recordset (0x800A0CB3)
Current provider does not support returning multiple recordsets from a single execution.
/simplex/rørproduktion/igang_saetter.asp, line 48
Avatar billede ocp Nybegynder
18. september 2003 - 14:02 #4
OK... så har I garanteret lavet en fejl i jeres SQL - det jeg kan se af den sp burde fungere helt efter hensigten.
Avatar billede ocp Nybegynder
18. september 2003 - 14:02 #5
Prøv også lige at indsætte en "set nocount on" liger under AS.
Avatar billede shm1976 Nybegynder
18. september 2003 - 14:07 #6
jeps - jeg fandt det også lige - send lige et svar så får du point - kan du forklare nærmere om baggrunden for 'set nocount on'
Avatar billede ocp Nybegynder
18. september 2003 - 14:13 #7
Ved at sætte nocount undgår man at få "XX rows affected" ud. Disse rækker KAN give problemer i visse tilfælde.
Avatar billede ocp Nybegynder
18. september 2003 - 14:14 #8
PS: Der er også performance-fordele hvis det er en SP der bliver kaldt mange gange

Fra online books:
"Stops the message indicating the number of rows affected by a Transact-SQL statement from being returned as part of the results."
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