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
 
#1

SProc misslungen: multiple rows in singleton select

  Alt 20. Jul 2006, 17:18
Datenbank: Interbase • Version: 7.5 • Zugriff über: NET 1.1 Borland Data Provider
Hallo,
nachdem ich mich in WinForms, C# und Interbase mit IBConsole eingearbeitet habe, möchte ich jetzt die Datenbank mit der Anwendung verbinden. Der Einfachheit halber verwende ich die BDP-Klassen, möchte aber die Eigenschaften überwiegend zur Laufzeit zuordnen.
Connection und Select klappen.
Probleme habe ich mit dem Aufruf einer StoredProcedure, die 2 Werte zurückgeben soll:

SQL-Code:
CREATE PROCEDURE Logbuch_Start
        ( Daten_Nr INTEGER, Selektion_Nr INTEGER, Formular_Nr SMALLINT )
RETURNS ( neu_ID INTEGER, Neuer_Monat BOOLEAN ) AS
BEGIN
  /*  alle Inhalte beschränkt auf das, was die Rückgabewerte betrifft  */
  neu_ID = GEN_ID( Logbuch_id, 1 );
  INSERT INTO Logbuch Values ( ... );
  /*  Einstellungen aktualisieren  */
  Neuer_Monat = False;
  IF ( Formular_Nr = 0 )
  THEN BEGIN
    /*  einige weitere Befehle  */
    Neuer_Monat = True;
  END
  /*  die folgende Zeile ist der einzige Suspend-Befehl in dieser Prozedur  */
  SUSPEND;
END
Im Programm benutze ich folgende Befehle:
Code:
cmdUpdate.CommandType = CommandType.StoredProcedure;
//  die eckigen Klammern oder @ werden entgegen Borland-Doku nicht benötigt,
//  sondern von Interbase als Fehler bemängelt
sCommand = "Logbuch_Start";
cmdUpdate.Parameters.Clear();
cmdUpdate.ParameterCount = 5;
param1 = new BdpParameter("Daten_Nr",      BdpType.Int32, 0);
param2 = new BdpParameter("Selektion_Nr", BdpType.Int32, 0);
param3 = new BdpParameter("Formular_Nr", BdpType.Int16, 0);
param4 = new BdpParameter("Neu_ID", BdpType.Int32);
param4.Direction = ParameterDirection.Output;
param5 = new BdpParameter("Neuer_Monat", BdpType.Boolean);
param5.Direction = ParameterDirection.Output;
cmdUpdate.Parameters.Add(param1);
cmdUpdate.Parameters.Add(param2);
cmdUpdate.Parameters.Add(param3);
cmdUpdate.Parameters.Add(param4);
cmdUpdate.Parameters.Add(param5);
try   {
  cmdUpdate.Connection = Connect;
  cmdUpdate.CommandText = sCommand;
  Connect.Open();
  cmdUpdate.ExecuteNonQuery();
  //  Fehler tritt ebenso auf bei:
  //  BdpDataReader Reader = cmdUpdate.ExecuteReader();
  //  usw. }
catch { ... }
finally { Connect.Close(); } }
Dies führt zu folgender Exception.Message:
Zitat:
Ausführung misslungen - multiple rows in singleton select
Die Ausführung der SP durch IBConsole funktioniert wunschgemäß. Was habe ich hier noch nicht verstanden? (Bitte beachten: Es gibt wirklich nur einen suspend-Befehl in der Prozedur; also kann es auch nur eine einzelne Zeile mit 2 Rückgabewerten geben.)

Außerdem: Wie komme ich an die Rückgabewerte heran - durch Abfrage von cmdUpdate.Parameters oder durch Auswertung von Reader oder...?

Danke für Tipps! Jürgen

PS. Bitte nicht wundern: ich werde in den nächsten Tagen nicht am PC sein; aber dieses Problem wollte ich vorher noch los werden.
#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 05:21 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