我似乎找不到在本地表中声明条件列的正确解决方案。
第二个表格有一个额外的列SnapshotURL
。
DECLARE @product_major_version int;
SELECT @product_major_version = CAST(SERVERPROPERTY('ProductMajorVersion') AS int);
IF (@product_major_version <= 12)
DECLARE @FileList TABLE
(
LogicalName NVARCHAR(128) NOT NULL
, PhysicalName NVARCHAR(260) NOT NULL
, Type CHAR(1) NOT NULL
, FileGroupName NVARCHAR(120) NULL
, Size NUMERIC(20, 0) NOT NULL
, MaxSize NUMERIC(20, 0) NOT NULL
, FileId BIGINT NULL
, CreateLSN NUMERIC(25, 0) NULL
, DropLSN NUMERIC(25, 0) NULL
, UniqueID UNIQUEIDENTIFIER NULL
, ReadOnlyLSN NUMERIC(25, 0) NULL
, ReadWriteLSN NUMERIC(25, 0) NULL
, BackupSizeInBytes BIGINT NULL
, SourceBlockSize INT NULL
, FileGroupId INT NULL
, LogGroupGUID UNIQUEIDENTIFIER NULL
, DifferentialBaseLSN NUMERIC(25, 0) NULL
, DifferentialBaseGUID UNIQUEIDENTIFIER NULL
, IsReadOnly BIT NULL
, IsPresent BIT NULL
, TDEThumbprint VARBINARY(32) NULL
);
ELSE
DECLARE @FileList TABLE
(
LogicalName NVARCHAR(128) NOT NULL
, PhysicalName NVARCHAR(260) NOT NULL
, Type CHAR(1) NOT NULL
, FileGroupName NVARCHAR(120) NULL
, Size NUMERIC(20, 0) NOT NULL
, MaxSize NUMERIC(20, 0) NOT NULL
, FileId BIGINT NULL
, CreateLSN NUMERIC(25, 0) NULL
, DropLSN NUMERIC(25, 0) NULL
, UniqueID UNIQUEIDENTIFIER NULL
, ReadOnlyLSN NUMERIC(25, 0) NULL
, ReadWriteLSN NUMERIC(25, 0) NULL
, BackupSizeInBytes BIGINT NULL
, SourceBlockSize INT NULL
, FileGroupId INT NULL
, LogGroupGUID UNIQUEIDENTIFIER NULL
, DifferentialBaseLSN NUMERIC(25, 0) NULL
, DifferentialBaseGUID UNIQUEIDENTIFIER NULL
, IsReadOnly BIT NULL
, IsPresent BIT NULL
, TDEThumbprint VARBINARY(32) NULL
, SnapshotURL NVARCHAR(360)
);
这种方法的问题是@FileList
声明了两次。
我无法使用ALTER TABLE
,因为它不受支持。
我该如何解决这个问题?
答案 0 :(得分:3)
这是Pரதீப்
的一个很好的建议或者您可以尝试使用TempTable
?
DECLARE @product_major_version int;
SELECT @product_major_version = CAST(SERVERPROPERTY('ProductMajorVersion') AS int);
CREATE TABLE #FileList
(
LogicalName NVARCHAR(128) NOT NULL
, PhysicalName NVARCHAR(260) NOT NULL
, Type CHAR(1) NOT NULL
, FileGroupName NVARCHAR(120) NULL
, Size NUMERIC(20, 0) NOT NULL
, MaxSize NUMERIC(20, 0) NOT NULL
, FileId BIGINT NULL
, CreateLSN NUMERIC(25, 0) NULL
, DropLSN NUMERIC(25, 0) NULL
, UniqueID UNIQUEIDENTIFIER NULL
, ReadOnlyLSN NUMERIC(25, 0) NULL
, ReadWriteLSN NUMERIC(25, 0) NULL
, BackupSizeInBytes BIGINT NULL
, SourceBlockSize INT NULL
, FileGroupId INT NULL
, LogGroupGUID UNIQUEIDENTIFIER NULL
, DifferentialBaseLSN NUMERIC(25, 0) NULL
, DifferentialBaseGUID UNIQUEIDENTIFIER NULL
, IsReadOnly BIT NULL
, IsPresent BIT NULL
, TDEThumbprint VARBINARY(32) NULL
);
IF (@product_major_version <= 12)
BEGIN
ALTER TABLE #FileList
Add SnapshotURL NVARCHAR(360)
END