Seite 1 von 1
Spalten einfügen in Schleife
Verfasst: Di, 13. Sep 2022 16:46
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;
Re: Spalten einfügen in Schleife
Verfasst: Di, 13. Sep 2022 16:48
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;
Re: Spalten einfügen in Schleife
Verfasst: Di, 13. Sep 2022 16:51
von Manfred
Danke,
als ich es las fiel es mir wie Schuppen aus den Haaren.
Re: Spalten einfügen in Schleife
Verfasst: Di, 13. Sep 2022 16:54
von Manfred
ok, ich bin jetzt unverschämt.
Wie frage ich vorher noch ab, ob es die Spalte schon gibt?
Re: Spalten einfügen in Schleife
Verfasst: Di, 13. Sep 2022 16:59
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;
Re: Spalten einfügen in Schleife
Verfasst: Di, 13. Sep 2022 17:38
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;
Re: Spalten einfügen in Schleife
Verfasst: Mi, 14. Sep 2022 10:00
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.
Re: Spalten einfügen in Schleife
Verfasst: Mi, 14. Sep 2022 10:35
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' );
Re: Spalten einfügen in Schleife
Verfasst: Mi, 14. Sep 2022 10:37
von Manfred
so mache ich das ja auch, aber das paßt doch nicht zu den Befehlen, die weiter oben stehen.
Re: Spalten einfügen in Schleife
Verfasst: Mi, 14. Sep 2022 12:03
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.
a bissle Transferleistung sollte schon sein. Welches Feld, welche Tabelle soll den Defaultwert bekommen?
Re: Spalten einfügen in Schleife
Verfasst: Mi, 14. Sep 2022 12:09
von Manfred
ach so,
ich dachte das wäre klar. Es bezog sich auf das Beispiel mit dem modtime von Markus weiter oben.
Re: Spalten einfügen in Schleife
Verfasst: Mi, 14. Sep 2022 12:24
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;
Re: Spalten einfügen in Schleife
Verfasst: Mi, 14. Sep 2022 12:27
von Manfred
hi marcus,
danke, aber das ist modify, ich wollte das direkt bei add column machen
Re: Spalten einfügen in Schleife
Verfasst: Mi, 14. Sep 2022 12:31
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;
Re: Spalten einfügen in Schleife
Verfasst: Mi, 14. Sep 2022 16:37
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.
Re: Spalten einfügen in Schleife
Verfasst: Di, 09. Mai 2023 14:15
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)
Re: Spalten einfügen in Schleife
Verfasst: Di, 09. Mai 2023 14:36
von nightcrawler
ersetzen durch where name not in ...
Re: Spalten einfügen in Schleife
Verfasst: Di, 09. Mai 2023 14:48
von Manfred
du bist mal wieder wie immer der größte