Jun 24, 2026, 10:39 AM
This commit is contained in:
@@ -38,9 +38,20 @@ DECLARE colCur CURSOR LOCAL FAST_FORWARD FOR
|
|||||||
ColumnDataType
|
ColumnDataType
|
||||||
FROM DBO.TEMP2
|
FROM DBO.TEMP2
|
||||||
WHERE ObjectType = 'TABLE';
|
WHERE ObjectType = 'TABLE';
|
||||||
|
PARSENAME(TMP.ObjectName, 2) AS SchemaName,
|
||||||
|
PARSENAME(TMP.ObjectName, 1) AS TableName,
|
||||||
|
TMP.ColumnName,
|
||||||
|
TMP.ColumnDataType,
|
||||||
|
c.is_nullable
|
||||||
|
FROM DBO.TEMP2 TMP
|
||||||
|
INNER JOIN sys.schemas s ON s.name = PARSENAME(TMP.ObjectName, 2)
|
||||||
|
INNER JOIN sys.tables t ON t.schema_id = s.schema_id AND t.name = PARSENAME(TMP.ObjectName, 1)
|
||||||
|
INNER JOIN sys.columns c ON c.object_id = t.object_id AND c.name = TMP.ColumnName
|
||||||
|
WHERE TMP.ObjectType = 'TABLE';
|
||||||
|
|
||||||
OPEN colCur;
|
OPEN colCur;
|
||||||
FETCH NEXT FROM colCur INTO @Schema, @Table, @Column, @OldDataType;
|
FETCH NEXT FROM colCur INTO @Schema, @Table, @Column, @OldDataType;
|
||||||
|
FETCH NEXT FROM colCur INTO @Schema, @Table, @Column, @OldDataType, @IsNullable;
|
||||||
|
|
||||||
WHILE @@FETCH_STATUS = 0
|
WHILE @@FETCH_STATUS = 0
|
||||||
BEGIN
|
BEGIN
|
||||||
@@ -63,6 +74,8 @@ BEGIN
|
|||||||
WHERE s.name = @Schema
|
WHERE s.name = @Schema
|
||||||
AND t.name = @Table
|
AND t.name = @Table
|
||||||
AND c.name = @Column;
|
AND c.name = @Column;
|
||||||
|
-- Nullability is now pre-fetched directly in the cursor declaration.
|
||||||
|
-- Preserving NOT NULL so PK columns do not become nullable.
|
||||||
|
|
||||||
-- ? Build ALTER COLUMN with correct nullability
|
-- ? Build ALTER COLUMN with correct nullability
|
||||||
SET @AlterSQL = 'ALTER TABLE ' + QUOTENAME(@Schema) + '.' + QUOTENAME(@Table) +
|
SET @AlterSQL = 'ALTER TABLE ' + QUOTENAME(@Schema) + '.' + QUOTENAME(@Table) +
|
||||||
@@ -111,6 +124,7 @@ BEGIN
|
|||||||
END CATCH
|
END CATCH
|
||||||
|
|
||||||
FETCH NEXT FROM colCur INTO @Schema, @Table, @Column, @OldDataType;
|
FETCH NEXT FROM colCur INTO @Schema, @Table, @Column, @OldDataType;
|
||||||
|
FETCH NEXT FROM colCur INTO @Schema, @Table, @Column, @OldDataType, @IsNullable;
|
||||||
END
|
END
|
||||||
|
|
||||||
CLOSE colCur;
|
CLOSE colCur;
|
||||||
@@ -129,6 +143,19 @@ DECLARE @OBJNAME NVARCHAR(MAX)
|
|||||||
DECLARE curCreate1 CURSOR FAST_FORWARD FOR
|
DECLARE curCreate1 CURSOR FAST_FORWARD FOR
|
||||||
SELECT createscript, ViewFullName
|
SELECT createscript, ViewFullName
|
||||||
FROM SchemaBoundViews ;
|
FROM SchemaBoundViews ;
|
||||||
|
DECLARE curCreate1 CURSOR LOCAL FAST_FORWARD FOR
|
||||||
|
SELECT
|
||||||
|
REPLACE(
|
||||||
|
SUBSTRING(
|
||||||
|
createscript,
|
||||||
|
CHARINDEX('CREATE VIEW', UPPER(createscript)),
|
||||||
|
LEN(createscript)
|
||||||
|
),
|
||||||
|
'CREATE VIEW',
|
||||||
|
'CREATE OR ALTER VIEW'
|
||||||
|
) AS createscript,
|
||||||
|
ViewFullName
|
||||||
|
FROM SchemaBoundViews;
|
||||||
|
|
||||||
OPEN curCreate1;
|
OPEN curCreate1;
|
||||||
FETCH NEXT FROM curCreate1 INTO @CreateSQL2,@OBJNAME;
|
FETCH NEXT FROM curCreate1 INTO @CreateSQL2,@OBJNAME;
|
||||||
|
|||||||
Reference in New Issue
Block a user