paging og search i samme sproc
Hejsa...Jeg har et problem med et kombinere en search og paging ved hjælp af en temptabel.
Probelemter ligger i at kombinere en dynamisk sql streng med en Create Tabel command i samme sproc.
Jeg bruger _sp_executesql system sproc, som tager selve sql strengen som første parameter og en parameterliste som anden parameter.
Min sproc ser således ud:
------------------------------------------------
CREATE PROCEDURE search_orders_1
(@StatusID INT,
@OrderID INT,
@UnionID INT,
@Text VARCHAR(256),
@Date CHAR(19),
@CurrentPage INT,
@PageSize INT,
@debug BIT = 0)
AS
SET NOCOUNT ON
DECLARE @sql nvarchar(4000), @paramlist nvarchar(4000)
SET @sql = N' CREATE TABLE #TempTable
([ID] INT IDENTITY PRIMARY KEY,
Forening VARCHAR(100),
Ordreid INT,
Kundenummer VARCHAR(100),
FO VARCHAR(8),
Beskrivelse VARCHAR(80),
Ordretype VARCHAR(100),
Udfoeres DATETIME,
Udfoert DATETIME,
BEM VARCHAR(2000),
LejlighedsId INT,
Agent VARCHAR(30),
AbbBeskr VARCHAR(100),
Navn VARCHAR(100),
KontaktNr VARCHAR(100),
Gade VARCHAR(100),
Nr VARCHAR(100),
Etage VARCHAR(100),
PostNr VARCHAR(100),
Bynavn VARCHAR(100))
INSERT INTO #TempTable
(Forening, Ordreid, Kundenummer, FO, Beskrivelse, Ordretype, Udfoeres, Udfoert, BEM, LejlighedsId, Agent, AbbBeskr, Navn, KontaktNr, Gade, Nr, Etage, PostNr, Bynavn)
SELECT F.Navn As Forening, O.Ordreid, O.Kundenummer, O.FO, O.Beskrivelse, O.Ordretype, O.Udfoeres, O.Udfoert, O.BEM, O.LejlighedsId, O.Agent, A.Beskrivelse AS AbbBeskr, K.Navn, K.KontaktNr, L.Gade, L.Nr, L.Etage, L.PostNr, L.Bynavn
FROM ORDRER O
LEFT JOIN Kunder K ON (K.Kundenummer = O.KundeNummer)
LEFT JOIN Lejlighed L ON (L.ID = K.LejlighedsId)
LEFT JOIN Forening F ON (F.FO = K.FO)
LEFT JOIN Abbtyper A on (K.ABB_TV = A.AbbId)
WHERE (Ordreklasse = 2 AND 1 = 1)'
IF @StatusID IS NOT NULL
SELECT @sql = @sql + ' AND O.Status = @xstatusid'
IF @OrderID IS NOT NULL
SELECT @sql = @sql + ' AND O.OrderID = @xorderid'
DECLARE @FirstRec INT
DECLARE @LastRec INT
SELECT @FirstRec = (@CurrentPage - 1) * @PageSize
SELECT @LastRec = (@CurrentPage * @PageSize + 1)
SELECT @sql = @sql + ' FROM tbl SELECT [ID], Forening, Ordreid, Kundenummer, FO, Beskrivelse, Ordretype, Udfoeres, Udfoert, BEM, LejlighedsId, Agent, AbbBeskr, Navn, KontaktNr, Gade, Nr, Etage, PostNr, Bynavn
FROM #TempTable
WHERE [ID] > ' + @FirstRec + '
AND [ID] < ' + @LastRec
IF @debug = 1
PRINT @sql
SELECT @paramlist = '@xstatusid INT, @xorderid INT'
EXEC sp_executesql @sql, @paramlist, @StatusID, @OrderID
------------------------------------------------
Håber nogen kan hjælpe mig.
Mvh
DC