Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - SQL-Prozeduren
wuschel_core - Di 29.05.12 12:25
Titel: SQL-Prozeduren
Grüß euch ; D
Also folgendes Problem :
C#-Quelltext
1:
| OleDbCommand command = new OleDbCommand("execute ermittle_einzelteile(artikelnummer, anzahl);"); |
Ich rufe eine Funktion auf die Rekursiv Teile zusammenzählt und in eine Globale Variable aufsummiert ( im SQL eine Package )
Wie komme ich am besten an Dieses Ergebnis ran (im c#), da die Proceduren selbst im SQL ja keinen Rückgabewert haben ?
Mfg ^^ hoffe das ist verständlich
Moderiert von
Th69: C#-Tags hinzugefügtModeriert von
Th69: Topic aus WinForms verschoben am Di 29.05.2012 um 12:28
Th69 - Di 29.05.12 12:36
Hallo,
du kannst doch bei der SQL-Procedure einfach
SQL-Anweisung
1:
| select @var; -- für "MS-SQL Server" (sonst einfach ohne @-Zeichen) |
als letzten SQL-Befehl hinschreiben (Globale Variablen sind bei einer MultiUser- bzw. MultiSession-Datenbank erst recht böse!).
Und von C# aus mittels
ExecuteScalar diesen Wert abrufen.
wuschel_core - Di 29.05.12 14:56
SQL-Anweisung
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| create or replace procedure ermittle_einzelteile(start_a_nr varchar2, menge int) is cursor unterteile is select * from struktur where o_a_nr = start_a_nr; anzahl int; art artikel%rowtype; neu int:=5; begin select count(*) into anzahl from struktur where o_a_nr = start_a_nr; if anzahl <> 0 then for unterteil in unterteile loop ermittle_einzelteile(unterteil.u_a_nr, menge * unterteil.menge); end loop; else --dbms_output.put_line ('geschafft!'); gesamt.gesamt:=gesamt.gesamt+menge; --dbms_output.put_line (gesamt.gesamt); end if; select @neu; end; |
Das Select @neu ist jetzt in der letzten Zeile , es wird aber als Fehler unterwellt ?
Auch wenn nach dem @ die globale Variable steht ..
Mfg
Moderiert von
Th69: Code- durch SQL-Tags ersetzt
Th69 - Di 29.05.12 15:15
Welche DB verwendest du denn? Nur bei "MS SQL Server" brauchst du das @-Zeichen (s. mein obiger Kommentar!).
Bei Oracle muß man folgenden Trick verwenden:
wuschel_core - Di 29.05.12 15:45
Achso , das Dual ist eine Table die man wie eine Variable verwendet oder ?
var setze ich auf den Wert von gesamt ?
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!