AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stored Procedure updaten

Ein Thema von ibp · begonnen am 9. Mär 2011 · letzter Beitrag vom 11. Mär 2011
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#1

Stored Procedure updaten

  Alt 9. Mär 2011, 16:59
Datenbank: interbase • Version: 6.5 • Zugriff über: BDE
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:
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;
SP löschen und neu erstellen lassen ist leider keine Option.

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

Geändert von ibp ( 9. Mär 2011 um 17:03 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Stored Procedure updaten

  Alt 9. Mär 2011, 18:02
Code:
create or replace
ist keine Alternative?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

AW: Stored Procedure updaten

  Alt 9. Mär 2011, 18:06
Wenn die SP neue Variablen enthält, dann schlägt leider die Aktualisierung fehl.
Mit welcher Fehlermeldung?

http://www.chiark.greenend.org.uk/~s...m/bugs-de.html
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#4

AW: Stored Procedure updaten

  Alt 9. Mär 2011, 18:15
Code:
create or replace
ist keine Alternative?
Create nein, da die SP schon vorhanden. REPLACE PROCEDURE gibt es bei interbase nicht.


Wenn die SP neue Variablen enthält, dann schlägt leider die Aktualisierung fehl.
Mit welcher Fehlermeldung?

http://www.chiark.greenend.org.uk/~s...m/bugs-de.html
"Allgemeiner SQL-Fehler, Token unknown -line xx, char yy"

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.

Geändert von ibp ( 9. Mär 2011 um 18:19 Uhr)
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

AW: Stored Procedure updaten

  Alt 9. Mär 2011, 18:38
Ändere mal deinen Code so ab:
Delphi-Quellcode:
  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;
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.

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);
Andreas

Geändert von shmia ( 9. Mär 2011 um 18:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#6

AW: Stored Procedure updaten

  Alt 9. Mär 2011, 19:07
Ändere mal deinen Code so ab:
Delphi-Quellcode:
  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;
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.
jupp so mache ich das ja auch wollte hier nur nicht allen Ballast mit posten. Ich habe die SP vor und zurück kontrolliert, mit der ist alles ok.
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);
ok, das werde ich mal versuchen....
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Stored Procedure updaten

  Alt 10. Mär 2011, 10:03
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
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#8

AW: Stored Procedure updaten

  Alt 10. Mär 2011, 10:12
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
Danke, habe ich aber schon gemacht, daher kann ich mir sehr sicher sein, dass die SP OK ist!
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#9

AW: Stored Procedure updaten

  Alt 10. Mär 2011, 16:37
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^ <<---
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#10

AW: Stored Procedure updaten

  Alt 10. Mär 2011, 18:37
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.
  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 19:36 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