AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Stored Procedure Aufruf Fehler
Thema durchsuchen
Ansicht
Themen-Optionen

Stored Procedure Aufruf Fehler

Ein Thema von Sven Janssen · begonnen am 23. Jun 2005 · letzter Beitrag vom 30. Jun 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Sven Janssen
Sven Janssen

Registriert seit: 22. Jun 2004
Ort: Mayen
187 Beiträge
 
Delphi 4 Professional
 
#1

Stored Procedure Aufruf Fehler

  Alt 23. Jun 2005, 09:36
Datenbank: Informix • Version: 7SE • Zugriff über: Luxena
Morgen.

ich möchte über die Komponente TSQLStoredProc eine Stored Procedure aufrufen.
Die Komponente zeigt mir meine SP an und fügt auch die korrekt Anzahl von Parametern hinzu.

Ich erhalte beim aktivieren oder mit dem Aufruf execproc die Fehlermeldung

Data type 0 (subtype 0) is unsupported

Jemand ne Idee woher die kommt.

Sven
:wq /dev/null
He who fights with monsters might take care lest he thereby become a monster - Nietzsche
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Stored Procedure Aufruf Fehler

  Alt 23. Jun 2005, 10:12
Hallo Sven,

hast du nach dem Besetzen der Parameter TStoredProc.Prepared auf TRUE gesetzt?

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Sven Janssen
Sven Janssen

Registriert seit: 22. Jun 2004
Ort: Mayen
187 Beiträge
 
Delphi 4 Professional
 
#3

Re: Stored Procedure Aufruf Fehler

  Alt 23. Jun 2005, 10:29
Ja habe ich.

Sven
:wq /dev/null
He who fights with monsters might take care lest he thereby become a monster - Nietzsche
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Stored Procedure Aufruf Fehler

  Alt 23. Jun 2005, 10:41
Manchmal sind ja die Fehlermeldungen direkt interpretierbar. Vielleicht hast du bei irgendeinem Parameter einen Datentyp verwendet, der von Informix SP nicht unterstützt wird.

marabu
  Mit Zitat antworten Zitat
Benutzerbild von Sven Janssen
Sven Janssen

Registriert seit: 22. Jun 2004
Ort: Mayen
187 Beiträge
 
Delphi 4 Professional
 
#5

Re: Stored Procedure Aufruf Fehler

  Alt 23. Jun 2005, 11:04
Die Stored Procedure funktioniert.
Wenn ich diese im Server selber anstarte wird sie korrekt ausgeführt.

Hier mal den Header der procedure:
create procedure saveKomCom(auftrag char(6) ,nummer char(30) ,was char(5) ) Sven
:wq /dev/null
He who fights with monsters might take care lest he thereby become a monster - Nietzsche
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Stored Procedure Aufruf Fehler

  Alt 23. Jun 2005, 11:27
Vielleicht müssen wir am anderen Ende anfangen. Zeig doch mal den Code mit dem du die SP in Delphi erzeugst. Du arbeitest ja mit TStoredProc, aber bei mir würde das so aussehen:

Delphi-Quellcode:
var
  sp: TADOStoredProc;
begin
  sp := TADOStoredProc.Create(nil);
  with sp do begin
    Connection := adoConnection;
    ProcedureName := 'saveKomCom;1';
    Parameters.CreateParameter('auftrag', ftString, pdInput, 6, '');
    Parameters.CreateParameter('nummer', ftString, pdInput, 30, '');
    Parameters.CreateParameter('was', ftString, pdInput, 5, '');
    Prepared := true;
  end;
end;
marabu
  Mit Zitat antworten Zitat
Benutzerbild von Sven Janssen
Sven Janssen

Registriert seit: 22. Jun 2004
Ort: Mayen
187 Beiträge
 
Delphi 4 Professional
 
#7

Re: Stored Procedure Aufruf Fehler

  Alt 23. Jun 2005, 12:06
Ich habe das eben in der IDE gemacht.

So nun habe ich folgenden Code
Delphi-Quellcode:
var dbproc: TSQLStoredProc;
begin

    dbproc:=TSQLStoredProc.Create(nil);

    dbproc.SQLConnection:=db;
    dbproc.StoredProcName:= 'saveKomCom';

    showmessage(inttostr(dbproc.Params.Count));

    with dbproc.Params.CreateParam(ftInteger, 'auftrag', ptInput) do asstring := '100006';
    with dbproc.Params.CreateParam(ftInteger, 'nummer', ptInput) do asstring := 'sven@stalkingwolf.de';
    with dbproc.Params.CreateParam(ftInteger, 'was', ptInput) do asstring := 'eMail';

    dbproc.Prepared := true;
    showmessage('davor');
    dbproc.open;

    dbproc.close;
    showmessage('danach');
    dbproc.free;
end;
Nun ist es ganz lustig.
Gebe ich als StoredProcName = saveKomCom mit dann spuckt das showmessage danach 0 für params.count aus. und das open gibt als Fehlermeldung aus : Listenindex überschreitet das Maximum(0).
Lasse ich die drei createParam weg, dann meckert er :-696 SQL error : Variable (auftrag) has undefined value. Setze ich über dbproc.ParamByName('auftrag').AsString:='100006'; den value erhalte ich die Meldung Parameter auftrag nicht gefunden.
Setze ich über dbproc.ParamByName('1').AsString:='100006'; dann erhalte ich die Meldung : -694 SQL error : Too many arguments passed to procedure

Gebe ich als StoredProcName = savekomcom mit, dann erhalte ich als param.count 3 zurück. Setze ich über dbproc.ParamByName('1').AsString:='100006'; den value erhalte ich die Meldung : Data type 0 (subtype 0) is unsupported .

----------------------
Wenn ich eine SP ohne Parameter aufrufe, dann läuft diese durch. Liegt also wohl an den Parametern.

Sven
:wq /dev/null
He who fights with monsters might take care lest he thereby become a monster - Nietzsche
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Stored Procedure Aufruf Fehler

  Alt 23. Jun 2005, 13:07
Du kannst die SP einmal erzeugen und mehrmals benutzen. Du solltest mit ExecProc arbeiten, wenn deine SP keinen result set produziert.

Zitat von Sven Janssen:
Gebe ich als StoredProcName = saveKomCom mit dann spuckt das showmessage danach 0 für params.count aus. ... Gebe ich als StoredProcName = savekomcom mit, dann erhalte ich als param.count 3 zurück.
Willst du damit sage, dass die Namenseigenschaft case sensitive ist? Kann man mit leben...

Zitat von Sven Janssen:
Setze ich über dbproc.ParamByName('1').AsString:='100006'; dann erhalte ich die Meldung : -694 SQL error : Too many arguments passed to procedure
Parameter "1" gibt es wohl auch nicht - oder?

marabu
  Mit Zitat antworten Zitat
Benutzerbild von Sven Janssen
Sven Janssen

Registriert seit: 22. Jun 2004
Ort: Mayen
187 Beiträge
 
Delphi 4 Professional
 
#9

Re: Stored Procedure Aufruf Fehler

  Alt 23. Jun 2005, 13:45
Case Sensitive ist gut.
Die sollte groß geschrieben werden und genau das kennt er nicht. Er möchte sie immer klein geschrieben haben.

Folgendes kleines Bespiel funktioniert auch nicht:
Delphi-Quellcode:
create procedure test(was int)
    returning int;

    return was;
end procedure;
Delphi-Quellcode:
    dbproc:=TSQLStoredProc.Create(nil);
    dbproc.SQLConnection:=db;
    dbproc.StoredProcName := 'test';
    dbproc.Params.Clear;
    with dbproc.Params.CreateParam(ftInteger, 'was', ptInput) do asinteger := 1;
    dbproc.Prepared := true;
    dbproc.ExecProc;
    dbproc.free;
Gleiche Meldung wie immer Data type 0 (subtype 0) is unsupported

Sven
:wq /dev/null
He who fights with monsters might take care lest he thereby become a monster - Nietzsche
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#10

Re: Stored Procedure Aufruf Fehler

  Alt 23. Jun 2005, 14:35
Wenn ich meine SP in MSSQL eingestellt habe und dann in der Delphi IDE ein Datenmodul anlege, eine TADOConnection draufziehe und die Verbindung zur Datenbank herstelle, eine TADOStoredProc mit der ADOConnection verbinde, dann kann ich den ProcedureName aus einer DropDownList auswählen. Nach meiner Auswahl sind alle Parameter korrekt initialisiert.

Wenn ich die SP dynamisch erzeuge, dann muss ich selbst für die Parameter sorgen. Damit ich keine Fehler mache, übernehme ich die Angaben, die ich vorher auf die obige Weise aus der Datenbank habe holen lassen.

Wenn das bei dbExpress auch so funktioniert, dann solltest du so erkennen können, ob du die Werte korrekt eingetragen hast. Einen Versuch wäre es wert...

marabu
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 12:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz