AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi MySQL und Zeos und Stored Proc Problem
Thema durchsuchen
Ansicht
Themen-Optionen

MySQL und Zeos und Stored Proc Problem

Ein Thema von guidok · begonnen am 8. Mai 2008 · letzter Beitrag vom 9. Mai 2008
 
guidok

Registriert seit: 28. Jun 2007
417 Beiträge
 
#1

MySQL und Zeos und Stored Proc Problem

  Alt 8. Mai 2008, 06:52
Datenbank: MySQL • Version: 5.1 • Zugriff über: ZEOS
Ich habe schon wieder ein Problem mit Stored Procedures.

Das hier hat funktioniert:

SQL-Code:
DELIMITER $$

DROP PROCEDURE IF EXISTS `bmm`.`sp_import_t_tepl`$$
CREATE DEFINER=`admin_bmm`@`%` PROCEDURE `bmm`.`sp_import_t_tepl`(in_id varchar(45),
                                                 in_stext varchar(45),
                                                 in_kst varchar(7),
                                                 in_anl varchar(10),
                                                 in_anr varchar(10),
                                                 in_cuser varchar(20),
                                                 in_state varchar(45))
BEGIN
  DECLARE id_count int;

  SELECT COUNT(id) INTO id_count FROM t_tepl
    WHERE id=in_id;

  IF id_count>0 THEN
    UPDATE t_tepl SET stext=in_stext, kst=in_kst, anl=in_anl, anr=in_anr, clast=now(), cuser=in_cuser, state=in_state
      WHERE id=in_id;
  ELSE
    INSERT INTO t_tepl VALUES(in_id, in_stext, in_kst, in_anl, in_anr, now(), in_cuser, in_state);
  END IF;

END $$

DELIMITER ;
Jetzt habe ich ein wenig geändert.

SQL-Code:
DELIMITER $$

DROP PROCEDURE IF EXISTS `bmm`.`sp_handle_t_tepl`$$
CREATE DEFINER=`admin_bmm`@`%` PROCEDURE `bmm`.`sp_handle_t_tepl`(in_action varchar(20),
                                                 in_id varchar(45),
                                                 in_stext varchar(45),
                                                 in_kst varchar(7),
                                                 in_anl varchar(10),
                                                 in_anr varchar(10),
                                                 in_cuser varchar(20),
                                                 in_state varchar(45))
BEGIN

DECLARE id_exists int;

SELECT COUNT(id) INTO id_exists FROM t_tepl WHERE id=in_id;

CASE

-- Alle Datensätze auswählen
  WHEN in_action='list_allTHEN
    SELECT * FROM t_tepl;

-- Technische Plätze importieren
  WHEN in_action='importTHEN
    IF id_exists>0 THEN
      UPDATE t_tepl SET stext=in_stext, kst=in_kst, anl=in_anl, anr=in_anr, clast=now(), cuser=in_cuser, state=in_state
        WHERE id=in_id;
    ELSE
      INSERT INTO t_tepl VALUES(in_id, in_stext, in_kst, in_anl, in_anr, now(), in_cuser, in_state);
    END IF;

END CASE;

END $$

DELIMITER ;
Ich führe die Procedure in einer Query aus.

Delphi-Quellcode:
begin
  with Query do
  begin
    Close;
    SQL.Clear;
    //Aufruf einer Stored Procedure zum Importieren eines Datensatzes
    //Hier wird auch geprüft, ob der DS bereits existiert und entsprechend behandelt
    SQL.Add('CALL sp_handle_t_tepl(:pACTION, :pID, :pSTEXT, :pKST, :pANL, :pANR, :pCUSER, :pSTATE);');
    Params.ParamByName('pACTION').Value := spImport;
    Params.ParamByName('pID').Value := ATP.TechnischerPlatz;
    Params.ParamByName('pSTEXT').Value := ATP.Bezeichnung;
    Params.ParamByName('pKST').Value := ATP.Kostenstelle;
    Params.ParamByName('pANL').Value := ATP.Anlage;
    Params.ParamByName('pANR').Value := ATP.ANummer;
    Params.ParamByName('pCUSER').Value := Global.EnviromentData.User;
    Params.ParamByName('pSTATE').Value := ATP.Status;
    try
      ExecSQL; //Hier habe ich auch schon Open versucht - das selbe Ergebnis
    except

    end;
  end;
end;
Leider bekomme ich anschließend die Meldung:

"procedure can't return a result set in the given context"

Bei der Ausführung der sp im MySQL Query Browser funktioniert es, anscheinend aber nicht in Verbindung mit der Zeos Query. Was läuft hier nicht richtig?
  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 01:03 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