Spalten einfügen in Schleife

Advantage Database Server

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Spalten einfügen in Schleife

Beitrag von Manfred »

da ich gerade dabei bin
das hier habe ich im ARC unter SQl Script versucht, es will aber nicht. Wo hakt es bei mir?

Code: Alles auswählen

declare @c string;
declare @t cursor;

open @t as select * from system.tables;

while fetch @t do
	  @c = 'alter table '+ @t.name ADD COLUMN lastupdate modtime;
	  execute immediate @c;
end;

close @t;
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Spalten einfügen in Schleife

Beitrag von Marcus Herz »

Code: Alles auswählen

declare @c string;
declare @t cursor;

open @t as select * from system.tables;

while fetch @t do
	  @c = 'alter table '+ @t.name +' ADD COLUMN lastupdate modtime';
	  execute immediate @c;
end;

close @t;
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Spalten einfügen in Schleife

Beitrag von Manfred »

Danke,
als ich es las fiel es mir wie Schuppen aus den Haaren.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Spalten einfügen in Schleife

Beitrag von Manfred »

ok, ich bin jetzt unverschämt.
Wie frage ich vorher noch ab, ob es die Spalte schon gibt?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Spalten einfügen in Schleife

Beitrag von Marcus Herz »

Code: Alles auswählen

declare @c string;
declare @t cursor;

open @t as select * from system.tables
and not name in (select parent from system.columns where name = 'lastupdate');

while fetch @t do
	  @c = 'alter table '+ @t.name +' ADD COLUMN lastupdate modtime';
	  execute immediate @c;
end;

close @t;
oder mit try

Code: Alles auswählen

declare @c string;
declare @t cursor;

open @t as select * from system.tables;

while fetch @t do
	  @c = 'try alter table '+ @t.name +' ADD COLUMN lastupdate modtime; catch all end try;';
	  execute immediate @c;
end;

close @t;
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: Spalten einfügen in Schleife

Beitrag von nightcrawler »

Code: Alles auswählen

if exists (select * from system.columns where name='F1' and Parent = 'TabelleC') then
 select true from system.iota;
else
 select false from system.iota;
 end if; 
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Spalten einfügen in Schleife

Beitrag von Manfred »

ok,
noch ein Problem, wie erweitert man den Befehl wenn man den Default Wert auf
DToC(Date()) + " " Time()
setzen will? Irgendwie klappt das bei mir nicht.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: Spalten einfügen in Schleife

Beitrag von nightcrawler »

hallo Manfred,
wenn ich die genaue Syntax suche, erweitere ich das Feld im ARC und exportiere die Tabelle nach SQL (rechte Maustaste im ADD-Baum, dann Generate SQL Script).

Code: Alles auswählen

EXECUTE PROCEDURE sp_ModifyFieldProperty ( 'tabelle', 
      'feld', 'Field_Default_Value', 
      'DToC(Date()) + " " Time()', 'APPEND_FAIL', 'tabelle_faill' ); 
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Spalten einfügen in Schleife

Beitrag von Manfred »

so mache ich das ja auch, aber das paßt doch nicht zu den Befehlen, die weiter oben stehen. :confused2:
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: Spalten einfügen in Schleife

Beitrag von nightcrawler »

Manfred hat geschrieben: Mi, 14. Sep 2022 10:37 so mache ich das ja auch, aber das paßt doch nicht zu den Befehlen, die weiter oben stehen. :confused2:
a bissle Transferleistung sollte schon sein. Welches Feld, welche Tabelle soll den Defaultwert bekommen?
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Spalten einfügen in Schleife

Beitrag von Manfred »

ach so,
ich dachte das wäre klar. Es bezog sich auf das Beispiel mit dem modtime von Markus weiter oben.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Spalten einfügen in Schleife

Beitrag von Marcus Herz »

Code: Alles auswählen

declare @c string;
declare @t cursor;

open @t as select * from system.tables
and name in (select parent from system.columns where name = 'feld');

while fetch @t do

	  @c = 'EXECUTE PROCEDURE sp_ModifyFieldProperty ( '''+ @t.name +'''',
	      ''feld'', ''Field_Default_Value'', 
	      ''DToC(Date()) + ''' '''+ Time()'', ''NO_VALIDATE'', NULL )'; 	  
	  execute immediate @c;
end;

close @t;
Zuletzt geändert von Marcus Herz am Mi, 14. Sep 2022 12:27, insgesamt 1-mal geändert.
Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Spalten einfügen in Schleife

Beitrag von Manfred »

hi marcus,
danke, aber das ist modify, ich wollte das direkt bei add column machen
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 851
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 39 Mal
Danksagung erhalten: 192 Mal
Kontaktdaten:

Re: Spalten einfügen in Schleife

Beitrag von Marcus Herz »

Ein modtime brauchst du nicht mir defalut belegen. Bei ADT ist der Default Wert now()

Code: Alles auswählen

declare @c string;
declare @t cursor;

open @t as select * from system.tables
and not name in (select parent from system.columns where name = 'lastupdate');

while fetch @t do
	  @c = 'alter table '+ @t.name +' ADD COLUMN lastupdate modtime default ''now()''' ;
	  execute immediate @c;
end;

close @t;

Gruß Marcus

Erkenne, was du findest, dann weißt du, wonach du gesucht hast
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: Spalten einfügen in Schleife

Beitrag von nightcrawler »

Manfred hat geschrieben: Mi, 14. Sep 2022 12:27 danke, aber das ist modify, ich wollte das direkt bei add column machen
Syntax hier: https://devzone.advantagedatabase.com/d ... _table.htm
mit dem Beispiel DEFAULT:

Code: Alles auswählen

ALTER TABLE demo10
ADD COLUMN test char(20)
 DEFAULT ‘abcde’
 CONSTRAINT MINIMUM ‘A’
 CONSTRAINT MAXIMUM ‘z’
 CONSTRAINT NOT NULL
CONSTRAINT error message ‘A bad value was input for the column named test’ 
hier statt eines Wertes die Funktionen eintragen.
EDIT: Hier geht nur String-Literal, also bleibst bei MODIFY wie oben.
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Spalten einfügen in Schleife

Beitrag von Manfred »

was mache ich falsch, das hier bei:

Code: Alles auswählen

declare @c string;
declare @t cursor;

open @t as select * from system.tables
and not name in (select parent from system.columns where name = 'tarifcode');

while fetch @t do
	  @c = 'alter table '+ @t.name + ' ADD COLUMN tarifcode Char(3)';
	  execute immediate @c;
end;

close @t;
bei and not name
diese fehlermeldung im Architekten kommt
poQuery: Error 7200: AQE Error: State = 42000; NativeError = 2117; [SAP][Advantage SQL Engine]Unexpected token: and -- Expecting semicolon. -- Location of error in the SQL statement is: 79 (line: 5 column: 1)
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
nightcrawler
1000 working lines a day
1000 working lines a day
Beiträge: 650
Registriert: Di, 24. Apr 2012 16:33
Wohnort: 72184 Weitingen
Hat sich bedankt: 3 Mal
Danksagung erhalten: 96 Mal
Kontaktdaten:

Re: Spalten einfügen in Schleife

Beitrag von nightcrawler »

ersetzen durch where name not in ...
--
Joachim
Joachim Dürr Softwareengineering
https://www.jd-engineering.de
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21165
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 206 Mal
Danksagung erhalten: 67 Mal

Re: Spalten einfügen in Schleife

Beitrag von Manfred »

du bist mal wieder wie immer der größte :binky:
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Antworten