jetzt wirds wild: stored procedure
Geizhals » Forum » Programmierung » jetzt wirds wild: stored procedure (8 Beiträge, 104 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
jetzt wirds wild: stored procedure
13.03.2003, 15:45:28
Hi!

Also, ich hab ein stored procedure auf einem SQL Server der einen Tree (postings eines forums) auflöst. Sprich die Reihenfolge der Anzeige rausfindet.

meine Tabelle schaut so aus:
ID (PK) int 4 0
datecreated datetime 8 0
subject varchar 50 0
text ntext 16 1
ppostingID (FK) int 4 1
userID int 4 0

Das wären dann ein paar Beispieldaten aus der Tabelle:

ID datecreated subject text ppostingID userID
3 20.02.1997 Re: Root 4 1
4 20.02.1997 Root NULL              2
9 13.03.2003 Re(2): Root 3 1
10 13.03.2003 Re(3): Root 9 2
12 10.03.2003 Re(2): Root 3 1

Meine stored procedure bekommt als parameter die ID ab der der Baum aufgelöst werden soll. Beim Aufruf der SP mit dem Parameter 4 bekomm ich also diesen output:

subj                                               indent      
-------------------------------------------------- -----------
Root                                               1          
Re: Root                                           2          
Re(2): Root                                        3          
Re(3): Root                                        4          
Re(2): Root                                        3        

die sp schaut so aus:

ALTER PROCEDURE forum.ShowHierarchy
(
@Root int
)
AS
BEGIN
SET NOCOUNT ON

DECLARE @PostID int, @PostSubj varchar(50)

SET @PostSubj = (SELECT subject FROM dbo.postings WHERE ID = @Root)

IF @@NESTLEVEL = 1 --beim ersten mal
BEGIN
CREATE TABLE #stack (subj varchar(50), indent int) --temp local table
END

INSERT INTO #stack VALUES (@PostSubj, @@NESTLEVEL)


SET @PostID = (SELECT MIN(ID) FROM dbo.postings WHERE ppostingID = @Root)
WHILE @PostID IS NOT NULL
BEGIN
EXEC forum.ShowHierarchy @PostID
SET @PostID = (SELECT MIN(ID) FROM dbo.postings WHERE ppostingID = @Root AND ID > @PostID)
END

IF @@NESTLEVEL = 1 --beim ersten mal
BEGIN
SELECT * FROM #stack
DROP TABLE #stack
END

RETURN 1

END


das ist alles schön und gut und bis daher funktionier auch alls, nur hetzt gehts los:


Ziel ist mit Visual Studio den Output der SP in einem datagrid einzutragen und das schaff ich einfach nicht! Denn beim aufruf der sp (übrigens auch bei einem access-datenprojekt) in einem sqldataadapter bekomm ich die fehlermeldung : "invalid object '#stack'" !! hmmm, im server explorer vom Visual studio gehts aber. ausserdem kann ich ja keine parameter beim aufruf angeben wenn ich einen sqldataadapter verwende ?-) muss ich das mit einem sqlcommand mach? bzw. wie würdet ihr das anstellen?

Fragen ;-)

na ich bin gespannt ob mir da wer antwortet ?-)

Antworten PM Alle Chronologisch
 
Melden nicht möglich
..  Re(2): jetzt wirds wild: stored procedure  (D_I_D_I am 13.03.2003, 15:52:50)
....  Re(4): jetzt wirds wild: stored procedure  (D_I_D_I am 13.03.2003, 17:50:05)
.  Re: jetzt wirds wild: stored procedure  (D_I_D_I am 13.03.2003, 23:22:28)
...  Re(3): jetzt wirds wild: stored procedure  (D_I_D_I am 13.03.2003, 23:34:25)
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung