Autor Beitrag
wuschel_core
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 29.05.12 12:25 
Grüß euch ; D

Also folgendes Problem :
ausblenden 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 user profile iconTh69: C#-Tags hinzugefügt
Moderiert von user profile iconTh69: Topic aus WinForms verschoben am Di 29.05.2012 um 12:28
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 29.05.12 12:36 
Hallo,

du kannst doch bei der SQL-Procedure einfach
ausblenden 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 Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Di 29.05.12 14:56 
ausblenden 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 intis
  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 user profile iconTh69: Code- durch SQL-Tags ersetzt
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4798
Erhaltene Danke: 1059

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: 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:
ausblenden SQL-Anweisung
1:
select var from dual;					
wuschel_core Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: 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 ?