Hallo...
Hintergrund:
http://www.delphipraxis.net/179605-a...n-per-sql.html
Das Script:
...geht alle Tabellen durch, guckt ob AutoInc Feld vorhanden, wenn ja, Feldnamen holen und den AutoInc korrigieren. Das ist der Gedanke.
Code:
DECLARE @aTableName VARCHAR(100);
DECLARE @aAutoIncField VARCHAR(100);
DECLARE @aFieldName VARCHAR(100);
DECLARE TableCursor CURSOR FOR
SELECT table_name FROM #tables WHERE AutoInc_Engine <> '';
OPEN TableCursor;
FETCH NEXT FROM TableCursor INTO @aTableName;
WHILE @@FETCH_STATUS = 0 DO
DECLARE FieldCursor CURSOR FOR
SELECT field_name FROM #fields where table_name = @aTableName and field_type_nexus = 'nxtAutoInc';
OPEN FieldCursor;
FETCH NEXT FROM FieldCursor INTO @aAutoIncField;
IF @@FETCH_STATUS = 0 THEN
ALTER TABLE @aTableName ALTER COLUMN @aAutoIncField CAST AS Integer IGNORE; <--
ALTER TABLE @aTableName ALTER COLUMN @aAutoIncField CAST AS AutoInc IGNORE; <--
END IF;
CLOSE FieldCursor;
FETCH NEXT FROM TableCursor INTO aTableName;
END WHILE;
CLOSE TableCursor;
Fehler im Alter Table Statement:
Die Variablen @TableName und @AutoIncField werden vom Parser direkt als Namen verwendet. Wie kann ich die Variablen als Tabellenname bzw. Feldname verwenden?
Danke für Info´s
Lösung gefunden:
... selbst zusammenbauen und als
SQL String übergeben
Code:
IF @@FETCH_STATUS = 0 THEN
EXECUTE IMMEDIATE 'ALTER TABLE ' + @aTableName + ' ALTER COLUMN ' + @aAutoIncField + ' CAST AS Integer IGNORE';
EXECUTE IMMEDIATE 'ALTER TABLE ' + @aTableName + ' ALTER COLUMN ' + @aAutoIncField + ' CAST AS AutoInc IGNORE';
END IF;