AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken C# SProc misslungen: multiple rows in singleton select
Thema durchsuchen
Ansicht
Themen-Optionen

SProc misslungen: multiple rows in singleton select

Ein Thema von Jürgen Thomas · begonnen am 20. Jul 2006 · letzter Beitrag vom 31. Jul 2006
 
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#3

Re: SProc misslungen: multiple rows in singleton select

  Alt 29. Jul 2006, 12:44
Danke, das hatte ich auch angenommen:
Zitat von dataspider:
Hi,

multiple rows in singleton select kommt vom Interbase Server und besagt,
dass du irgendwo einen Select hast, der nur einen Wert liefern darf, aber mehrere Records liefert.

Wenn 2 Datensätze im Feld den Wert habe, weiss die DB nicht, welche ID sie dir nun senden soll.
Somit würde ich in der Procedure schauen...

Frank
Ich habe die Stored Procedure in meiner Anfrage bereits angegeben:

Es gibt eine einzige Anweisung, die neu_ID etwas zuweist.
Es gibt zwei Anweisungen, die Neuer_Monat etwas zuweist.
Es gibt erst danach eine einzige SUSPEND-Anweisung.

Wieso soll Interbase glauben, dass multiple rows zurückgeliefert werden?

1. Ersatzversuch:
SELECT * FROM Logbuch_Start (0, 0, 0) aufgerufen durch C# (ursprünglich cmdUpdate, jetzt cmdSelect):
Code:
sCommand = "SELECT * FROM Logbuch_Start";
cmdSelect.Parameters.Clear();
cmdSelect.Parameters.Add(new BdpParameter("Daten_Nr",      BdpType.Int32, 0));
cmdSelect.Parameters.Add(new BdpParameter("Selektion_Nr", BdpType.Int32, 0));
cmdSelect.Parameters.Add(new BdpParameter("Formular_Nr", BdpType.Int32, 0));
...
cmdSelect.CommandText = sCommand;
tblResults.Rows.Clear();
Connect.Open();
Adapter.Fill(ds, tblResults.TableName);
Dies liefert die Interbase-Fehlermeldung:
Zitat:
parameter mismatch for procedure LOGBUCH_START
2. Ersatzversuch:
Aufruf durch C#:
Code:
sCommand = "SELECT * FROM Logbuch_Start(0,0,0)";
cmdSelect.Parameters.Clear();
//  keine Parameter ausdrücklich eingetragen
//  Aufruf wie beim 1. Ersatzversuch
Dies liefert keine Fehlermeldung, aber die Procedure wird nicht ausgeführt, und es gibt die Rückgabewerte (null, true) statt (3, true); der Parameter neu_ID kann - siehe SQL-Quelltext - niemals als null zurückgegeben werden.

Also Problem: Wie kann ich mit BdpProvider eine Stored Procedure aufrufen, die Parameter will und Werte zurückgibt? Wie kann ich die Rückgabewerte auslesen? (Der Weg über tblResults und Adapter ist nur eine schnelle Ersatzlösung, aber nicht wirklich sinnvoll.)

Hilfe! Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz