Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - Abspeicherung eines Cursors im Microsoft SQL Server


Felix2000 - Mo 29.08.11 11:15
Titel: Abspeicherung eines Cursors im Microsoft SQL Server
Hi Folks !

Kann mir vielleicht jemand von euch sagen, wo innerhalb des Microsoft SQL Servers und vor allem als was (evtl. als Stored Procedure oder als Trigger) ein sogenannter Cursor abgespeichert wird, den ich selbst geschrieben habe?

Greetz
Felix


Ralf Jansen - Mo 29.08.11 11:59

Kannst du deine Frage nochmal näher erläutern. Einen Cursor abzuspeichern hört sich merkwürdig an.


Felix2000 - Mo 29.08.11 12:09

Hi Folks !

Am besten poste ich dazu mal ein konkretes Codebeispiel:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
DECLARE garten LOCAL STATIC
FOR

   SELECT ArtNr, ArtBezeichnung, ArtGruppe, ArtVKPreis
   FROM dbo.tblArtikel
   WHERE ArtGruppe = 'GA';

Open garten

DECLARE @artNr int, @bez varchar(60), @preis smallmoney, @gruppe char(2)

FETCH NEXT FROM garten INTO @artnr, @bez, @gruppe, @preis

WHILE @@FETCH_STATUS = 0
BEGIN

   --Beliebige Anweisungen

   FETCH NEXT FROM garten  INTO @artnr, @bez, @gruppe, @preis
END

CLOSE garten
DEALLOCATE garten


Jetzt stellt sich für mich die Frage, wie ich diese Code dauerhaft im MS SQL Server ablegen kann und vor allem als was genau. Ich hoffe, die Frage stellt sich nun etwas prägnanter da?!

Greetz
Felix


Ralf Jansen - Mo 29.08.11 12:29

In dem Fall wäre dein T-SQL Code wohl in einer Stored Procedure am besten aufgehoben.


Felix2000 - Mo 29.08.11 13:01

user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
In dem Fall wäre dein T-SQL Code wohl in einer Stored Procedure am besten aufgehoben.


das bedeutet also, für einen Cursor gibt es keine eigene Art der Abspeicherung? Das bedeutet also, um diesen Cursor in meiner Datenbank abzuspeichern, müsste ich ihn in eine Stored Procedure "einwickeln" und dann als Stored Procedure abspeichern?

Greetz
Felix


Ralf Jansen - Mo 29.08.11 13:08

Ein Cursor ist einfach ein Sprachelement von T-SQL(oder irgend einer anderen prozeduralen SQL artigen Sprache) und so wie du Strukturen in c# wie Schleifen, Verzweigungen etc. kompilierst und in einer Assembly ablegst solltest du das für T-SQL z.B. in einer Stored Proc machen. Du kannst den Code aber auch von mir aus als Text einfach in irgendeiner Tabellen Zelle ablegen den wieder daraus laden und ausführen.