hilpers


  hilpers > microsoft.* > microsoft.german.entwickler.dotnet.csharp

 #1  
21.07.2008, 10:50
Christian Mauerer
Hallo,

ich habe ein Problem in meiner aktuellen Anwendung.
Hier ist es so, dass doch recht komplexe Datenbankabfragen durchgeführt
werden.
Als Datenbank verwende ich den SQL-Server 2005.

Der User hat die Möglichkeit, verschiedene Filterdaten einzugeben.
Dann wird anhand dieser Filterdaten die Datenbank abgefragt.
Das es unterschiedliche Eingaben für die Abfrage gibt,
setzte ich den SQL-String zur Laufzeit zusammen.
Soweit klappt das nun ganz gut.

Nun ist es aber so, dass noch für die oben genannten Rückgabedaten Summen
berechnet werden müssen.
Und zwar auch anhand der Eingaben.
Ich würde es nun gerne so machen, dass ich eine gespeicherte Prozedur
schreiben.
Diese gespeicherte Prozedur läuft die abgefragen Daten der Reihe nach durch
und berechnet die Summen und
erweitert die zuvor abgefragten Daten eben um diese Summen.

Nun mein Problem.
Ist es möglich, dass ich eine gespeicherte Prozedur aufrufe und dabei eine
DataTable übergebe, welche dann in der gespeicherten Prozedur abgearbeitet
wird?

Ich weiß, es jetzt kommt der Einwand: Warum integrierst du nicht gleich die
1. Abfrage auch in die gespeicherte Prozedur. Nun das mache ich im Moment
aus folgendem Grund nicht. Der SQL-String muss anhand der Usereingaben
zusammengesetzt werden. Somit steht erst zur Laufzeit fest, wie abgefragt
wird. Und das macht doch keinen Sinn, in eine gespeicherte Prozedur zu
integrieren, oder?

Bin auch für Alternativen Dank.

Vielen Dank und schöne Grüße

Christian
 #2  
25.07.2008, 21:32
Markus Radtke
Hallo Christian,

ich würde dir das Filtern deiner Daten im Speicher mit ADO.NET empfehlen.

http://msdn.microsoft.com/de-de/library/bb979485.aspx

Dieser Weg ist weitaus flexibler, performanter und transparenter, weil du
alle Logik-Operationen im Code erledigen kannst.

Gruß
Markus


"Christian Mauerer" <info1> schrieb im Newsbeitrag
news:4292
[..]
 #3  
29.07.2008, 22:11
Schmeusser
Man kann keine Tabellen an Stored Procedures in SQL Server 2005 übergeben.
Ich mache es immer so, dass ich eine komma-separierte Liste als varchar
übergebe. In der Stored Procedure kann man dann die Liste sehr schnell mit
einer Funktion in eine Tabelle umwandeln. Du brauchst also 2 Dinge: etwas C#
Code, der dir eine komma-separierte Liste a la "a,b,c,d" aus einer Collection
erzeugt, der ist ja leicht zu schreiben. Und die Funktion in T-SQL ist hier
beschrieben:
http://codebank.wordpress.com/2007/0...sv-to-table-2/

Es gibt auch noch aufwändigere Möglichkeiten.

oder man verwendet XML wie in
http://www.sqlservercentral.com/arti...ocedures/2977/
Ähnliche Themen
gespeicherte Prozeduren

Hallo..., wie kann ich Sp auf einen anderen SQL-Server einsetzen ohne diese wieder neu zu schreiben? Danke MfG Hans-Jürgen

Gespeicherte Prozeduren aufrufen

Hallo, ich habe eine gespeicherte Prozedur in meiner Datenbank (Oracle), die ich jetzt aus Java aurufen möchte. Die Prozedur heisst to_read und hat zwei IN-Parameter. Ich...

gespeicherte Prozeduren

wenn ich von verschiedenen applikation auf die gleiche datenbank zugreifen will, dann sollte man sperren, update, insert delete und die @@error abfragen in gespeicherte...

Gespeicherte Prozeduren

Hallo Leute, ich verwende in meinen Datenbankapplikationen viel gespeicherte Prozeduren. Wenn mehrere User gleichzeitig auf die gleiche Prozedur zugreifen, bekomme ich aber...


Alle Zeitangaben in WEZ. Es ist jetzt 03:22 Uhr. | Privacy Policy