Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Text-Parameterübergabe an Stored Procedure mit ADO (https://www.delphipraxis.net/11900-text-parameteruebergabe-stored-procedure-mit-ado.html)

Leuselator 16. Nov 2003 15:42


Text-Parameterübergabe an Stored Procedure mit ADO
 
Moin Gemeinde!

Untersatz: MSSQL-2000-SP3,MDAC2.8,Delphi5 Ent.,Win2k
Muß für mein aktuelles Projekt mit ADO arbeiten und treffe auf Probleme mit der Übergabe von Textparametern. Aber vielleicht hab ich ja mal wieder Tomaten auf den Augen:
SQL-Code:
create table Dummy (
idDummy       int identity(1,1) not null,
T_Beschreibung text                  null)
GO
create procedure SP_Dummy (@T_Beschreibung text)
as
begin
  insert into Dummy
  (T_Beschreibung) values (@T_Beschreibung)
end
GO
Mit BDE (TQuery) konnte ich bisher diesen Code ausführen:
Delphi-Quellcode:
//irgendwo gibt es z.B. ein TMemo: Memo1
procedure PutDataIn;
var qryTemp : TQuery;
begin
  qryTemp := TQuery.Create(nil);
  try
    qryTemp.SQL.Add('Execute SP_Dummy :MeinText');
    qryTemp.Prepare;
    qryTemp.ParamByName('MeinText').AsString := Memo1.Lines.Text;
    qryTemp.ExecSql;
  finally
    qryTemp.Free;
  end;
end;
Mit diesem Ado-Pendent gibt es Stress, sobald der Text Hochkommas enthält:
Delphi-Quellcode:
procedure PutDataIn;
var MyStream : TMemoryStream;
    aqryTemp : TAdoQuery;
    DummyString : String;
    DummyPtr : Pointer;
begin
  aqryTemp := TADOQuery.Create(nil);
  MyStream := TMemoryStream.Create;
  try
    aqryTemp.Connection := IrgendeineAdoConnection;
    aqryTemp.SQL.Add('execute SP_Dummy :MeinText');
    aqryTemp.Parameters.ParamByName('MeinText').DataType := ftMemo;
    aqryTemp.Prepare;

    DummyString := Memo1.Lines.Text;
    DummyPtr   := @DummyString;
    MyStream.Write(DummyPtr,Length(DummyString));
    aqryTemp.Parameters.ParamByName('MeinText').LoadFromStream(MyStream,ftMemo);
    aqryTemp.ExecSQL;
  finally
    MyStream.Free;
    TempQry.Free;
  end;
end;
funktioniert ebensowenig wie:
Delphi-Quellcode:
procedure PutDataIn;
var aqryTemp : TAdoQuery;
begin
  aqryTemp := TADOQuery.Create(nil);
  try
    aqryTemp.Connection := IrgendeineAdoConnection;
    aqryTemp.SQL.Add('execute SP_Dummy :MeinText');
    aqryTemp.Parameters.ParamByName('MeinText').DataType := ftMemo;
    aqryTemp.Prepare;
    aqryTemp.Parameters.ParamByName('MeinText').Value := Memo1.Lines.Text;
    aqryTemp.ExecSQL;
  finally
    TempQry.Free;
  end;
end;
sobald der das Memo Hochkommatas (') enthält, kommt Müll raus, da nun ADO/MSSQL einen zusätzlichen Parameter übergibt (der erste ist ja abgeschlossen :-(.
Jemand 'ne Idee?

r_kerber 16. Nov 2003 15:47

Re: Text-Parameterübergabe an Stored Procedure mit ADO
 
Hallo Leuselator,

und warum verwendest Du nicht TADOStoredProc?

Leuselator 16. Nov 2003 15:50

Re: Text-Parameterübergabe an Stored Procedure mit ADO
 
Gewohnheit - hatte bisher noch keinen Vorteil in der Verwendung von TStoredProc gesehen.

Ist das bei TADOStordeProc nun anders? - Teste bereits...

Leuselator 16. Nov 2003 16:59

Re: Text-Parameterübergabe an Stored Procedure mit ADO
 
Hmm - funktioniert.

Allerdings ist es wenn man das dynamisch macht ziemlich viel Tipperei.
Wenn also jemand hier 'ne Idee wie das mit Ado-Query funktioniert - immer her damit.

Danke Rainer!


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 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 by Thomas Breitkreuz