@@ -9,47 +9,47 @@ CREATE PROCEDURE tSQLt.FakeTable
99 @Defaults BIT = NULL
1010AS
1111BEGIN
12- DECLARE @OrigSchemaName NVARCHAR (MAX );
13- DECLARE @OrigTableName NVARCHAR (MAX );
14- DECLARE @NewNameOfOriginalTable NVARCHAR (4000 );
15- DECLARE @OrigTableFullName NVARCHAR (MAX ); SET @OrigTableFullName = NULL ;
16-
17- SELECT @OrigSchemaName = @SchemaName,
18- @OrigTableName = @TableName
19-
20- IF (@OrigTableName NOT IN (PARSENAME (@OrigTableName,1 ),QUOTENAME (PARSENAME (@OrigTableName,1 )))
21- AND @OrigSchemaName IS NOT NULL )
12+ DECLARE @OrigObjectCleanQuotedSchemaName NVARCHAR (MAX );
13+ DECLARE @OrigObjectCleanQuotedName NVARCHAR (MAX );
14+ DECLARE @OrigObjectNewName NVARCHAR (4000 );
15+ DECLARE @OrigObjectFullName NVARCHAR (MAX ) = NULL ;
16+ DECLARE @TargetObjectFullName NVARCHAR (MAX ) = NULL ;
17+
18+ IF (@TableName NOT IN (PARSENAME (@TableName,1 ),QUOTENAME (PARSENAME (@TableName,1 )))
19+ AND @SchemaName IS NOT NULL )
2220 BEGIN
2321 RAISERROR (' When @TableName is a multi-part identifier, @SchemaName must be NULL!' ,16 ,10 );
2422 END
2523
26- SELECT @SchemaName = CleanSchemaName,
27- @TableName = CleanTableName
24+ SELECT @OrigObjectCleanQuotedSchemaName = CleanSchemaName,
25+ @OrigObjectCleanQuotedName = CleanTableName
2826 FROM tSQLt .Private_ResolveFakeTableNamesForBackwardCompatibility (@TableName, @SchemaName);
2927
30- EXEC tSQLt .Private_ValidateFakeTableParameters @SchemaName,@OrigTableName,@OrigSchemaName;
28+ EXEC tSQLt .Private_ValidateFakeTableParameters @OrigObjectCleanQuotedSchemaName,@TableName,@SchemaName;
29+
30+ SET @OrigObjectFullName = @OrigObjectCleanQuotedSchemaName + ' .' + @OrigObjectCleanQuotedName;
3131
32- EXEC tSQLt .Private_RenameObjectToUniqueName @SchemaName , @TableName , @NewNameOfOriginalTable OUTPUT ;
32+ EXEC tSQLt .Private_RenameObjectToUniqueName @OrigObjectCleanQuotedSchemaName , @OrigObjectCleanQuotedName , @OrigObjectNewName OUTPUT ;
3333
34- SELECT @OrigTableFullName = S .base_object_name
34+ SELECT @TargetObjectFullName = S .base_object_name
3535 FROM sys .synonyms AS S
36- WHERE S .object_id = OBJECT_ID (@SchemaName + ' .' + @NewNameOfOriginalTable );
36+ WHERE S .object_id = OBJECT_ID (@OrigObjectCleanQuotedSchemaName + ' .' + @OrigObjectNewName );
3737
38- IF (@OrigTableFullName IS NOT NULL )
38+ IF (@TargetObjectFullName IS NOT NULL )
3939 BEGIN
40- IF (COALESCE (OBJECT_ID (@OrigTableFullName ,' U' ),OBJECT_ID (@OrigTableFullName ,' V' )) IS NULL )
40+ IF (COALESCE (OBJECT_ID (@TargetObjectFullName ,' U' ),OBJECT_ID (@TargetObjectFullName ,' V' )) IS NULL )
4141 BEGIN
42- RAISERROR (' Cannot fake synonym %s.%s as it is pointing to %s, which is not a table or view!' ,16 ,10 ,@SchemaName,@TableName,@OrigTableFullName );
42+ RAISERROR (' Cannot fake synonym %s as it is pointing to %s, which is not a table or view!' ,16 ,10 ,@OrigObjectFullName,@TargetObjectFullName );
4343 END ;
4444 END ;
4545 ELSE
4646 BEGIN
47- SET @OrigTableFullName = @SchemaName + ' .' + @NewNameOfOriginalTable;
47+ SET @TargetObjectFullName = @OrigObjectCleanQuotedSchemaName + ' .' + QUOTENAME (@OrigObjectNewName); -- TODO:Test for QUOTENAME
4848 END ;
4949
50- EXEC tSQLt .Private_CreateFakeOfTable @SchemaName , @TableName , @OrigTableFullName , @Identity, @ComputedColumns, @Defaults;
50+ EXEC tSQLt .Private_CreateFakeOfTable @OrigObjectCleanQuotedSchemaName , @OrigObjectCleanQuotedName , @TargetObjectFullName , @Identity, @ComputedColumns, @Defaults;
5151
52- EXEC tSQLt .Private_MarktSQLtTempObject @OrigTableFullName , N ' TABLE' , @NewNameOfOriginalTable ;
52+ EXEC tSQLt .Private_MarktSQLtTempObject @OrigObjectFullName , N ' TABLE' , @OrigObjectNewName ;
5353END
5454-- -Build-
5555GO
0 commit comments