I stället för print kan du göra insert i en tabell (t) och sedan
select * from tblMessages
where Messageid In (select messageid from t)
2 svar · 164 visningar · startad av doggelito
hittade på denna:
CREATE PROCEDURE dbo.sp_messages_message
(@current int)
as
SET NOCOUNT ON
DECLARE @lvl int, @line char(20)
CREATE TABLE #stack (item char(20), lvl int)
INSERT INTO #stack VALUES (@current, 1)
SELECT @lvl = 1
WHILE @lvl > 0
BEGIN
IF EXISTS (SELECT * FROM #stack WHERE lvl = @lvl)
BEGIN
SELECT @current = item
FROM #stack
WHERE lvl = @lvl
SELECT @line = space(@lvl - 1) + @current
PRINT @line
DELETE FROM #stack
WHERE lvl = @lvl
AND item = @current
INSERT #stack
SELECT Relationid, @lvl + 1
FROM tblMessages
WHERE Messageid = @current
IF @@ROWCOUNT > 0
SELECT @lvl = @lvl + 1
END
ELSE
SELECT @lvl = @lvl - 1
END -- WHILE
GO
men hur använder jag resultatet?
nu printar den ut alla Messageid (PRINT @line), kan man fånga upp dessa och köra en:
select * from tblMessages
where Messageid In (#stack)
I stället för print kan du göra insert i en tabell (t) och sedan
select * from tblMessages
where Messageid In (select messageid from t)
Javisst! :bire