![]() |
Datenbank: interbase • Version: 6.5 • Zugriff über: BDE
Stored Procedure updaten
Hi,
hier mal wieder Fragen an die allwissende Gemeinde. Ich versuche mittels einem Query eine SP aus dem Programm heraus zu aktualisieren. Wenn die SP neue Variablen enthält, dann schlägt leider die Aktualisierung fehl.
Code:
SP löschen und neu erstellen lassen ist leider keine Option.
query.sql.add('ALTER PROCEDURE');
query.sql.add('MYPROCEDURE ('); query.sql.add(' MYINPUTSTR varchar(32),'); query.sql.add(' MYINPUTINT integer)'); query.sql.add('returns ('); query.sql.add(' OUTPUT smallint)'); query.sql.add('as'); query.sql.add('declare variable MYVARINTERN integer;'); query.sql.add('BEGIN'); ... query.sql.add(' SUSPEND;'); query.sql.add('END'); query.ExecSQL; Das komische ist, wenn ich den gleichen Text in eine Abfrage von ibexpert packe, dann funktioniert der Update. Hat jemand eine Idee warum das so ist und wie ich das abstellen kann? vg ibp |
AW: Stored Procedure updaten
Code:
ist keine Alternative?
create or replace
Gruß K-H |
AW: Stored Procedure updaten
Zitat:
![]() |
AW: Stored Procedure updaten
Zitat:
Zitat:
unter line xx char yy steht innerhalb der Prozedur der Variablename, die zusätzlich neu definiert wurde. Die grundsätzliche SP ist ja ok und läuft. |
AW: Stored Procedure updaten
Ändere mal deinen Code so ab:
Delphi-Quellcode:
Nur um 150%ig sicher zu gehen, dass dein SQL-Kommando in Ordnung ist und du nicht die berühmt-berüchtigten Tomaten auf den Augen hast.
query.sql.add('ALTER PROCEDURE');
query.sql.add('MYPROCEDURE ('); ... query.sql.add(' SUSPEND;'); query.sql.add('END'); Assert(query.ParamCount=0, 'Parameter nicht erlaubt'); try query.ExecSQL; except on E:Exception do begin E.Message := E.Message +#13#10+query.SQL.Text; raise; end; PS: wenn das Alles nicht hilft, dann würde ich mal versuchen, den SQL-Befehl direkt über die Database-Komponente abzuschicken:
Delphi-Quellcode:
sql:string;
sql := 'ALTER PROCEDURE'#13#10+ 'MYPROCEDURE ('#13#10+ ... ; Database1.Execute(sql); |
AW: Stored Procedure updaten
Zitat:
Zitat:
|
AW: Stored Procedure updaten
Hi,
was du auch versuchen kannst: über query.sql.SaveToFile() das Statement speichern und in IBExpert ausführen. Wenn da doch ein Tippfehler drin ist, findest DU den so am schnellsten. Anschließend halt nicht vergessen das SaveToFile wieder auszubauen... Grüße |
AW: Stored Procedure updaten
Zitat:
|
AW: Stored Procedure updaten
Nur eine Idee:
wenn man mit IBExpert ein Matadata Extract durchführt, kann man bei Stored Procedures gut sehen, dass zuerst der Statement Delimiter von ';' auf '^' umgesetzt wird, damit man im alter procedure statement das Semikolon als Anweisungstrenner verwenden kann. Und dann muss am Ende des Prozedurtextes das ^ stehen, also
Delphi-Quellcode:
alter procedure x
begin suspend; end^ <<--- |
AW: Stored Procedure updaten
komisch anscheinend liegt es nicht am update der variablen der SP.
Er meckert immer die erste Benutzung der Variablen an, aber nicht die Input- oder Output-Variablen. :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 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