-
Notifications
You must be signed in to change notification settings - Fork 113
Expand file tree
/
Copy pathtSQLt.AssertObjectExists.ssp.sql
More file actions
62 lines (58 loc) · 2.05 KB
/
tSQLt.AssertObjectExists.ssp.sql
File metadata and controls
62 lines (58 loc) · 2.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
IF OBJECT_ID('tSQLt.AssertObjectExists') IS NOT NULL DROP PROCEDURE tSQLt.AssertObjectExists;
GO
---Build+
CREATE PROCEDURE tSQLt.AssertObjectExists
@ObjectName NVARCHAR(MAX),
@Message NVARCHAR(MAX) = '',
@TypeName NVARCHAR(MAX) = NULL
AS
BEGIN
DECLARE @Msg NVARCHAR(MAX);
DECLARE @ObjectId INT;
DECLARE @ActualType NVARCHAR(128);
IF(@ObjectName LIKE '#%')
BEGIN
SET @ObjectId = OBJECT_ID('tempdb..'+@ObjectName);
IF @ObjectId IS NULL
BEGIN
SELECT @Msg = '''' + COALESCE(@ObjectName, 'NULL') + ''' does not exist';
EXEC tSQLt.Fail @Message, @Msg;
RETURN 1;
END;
IF @TypeName IS NOT NULL
BEGIN
SELECT @ActualType = type_desc FROM tempdb.sys.objects WHERE object_id = @ObjectId;
IF @ActualType IS NULL OR @ActualType <> UPPER(@TypeName)
BEGIN
SELECT @Msg = '''' + COALESCE(@ObjectName, 'NULL') + ''' exists but is not of type ''' + @TypeName + '''' +
CASE WHEN @ActualType IS NOT NULL THEN ' (found type: ''' + @ActualType + ''')' ELSE '' END;
EXEC tSQLt.Fail @Message, @Msg;
RETURN 1;
END;
END;
END
ELSE
BEGIN
SET @ObjectId = OBJECT_ID(@ObjectName);
IF @ObjectId IS NULL
BEGIN
SELECT @Msg = '''' + COALESCE(@ObjectName, 'NULL') + ''' does not exist';
EXEC tSQLt.Fail @Message, @Msg;
RETURN 1;
END;
IF @TypeName IS NOT NULL
BEGIN
SELECT @ActualType = type_desc FROM sys.objects WHERE object_id = @ObjectId;
IF @ActualType IS NULL OR @ActualType <> UPPER(@TypeName)
BEGIN
SELECT @Msg = '''' + COALESCE(@ObjectName, 'NULL') + ''' exists but is not of type ''' + @TypeName + '''' +
CASE WHEN @ActualType IS NOT NULL THEN ' (found type: ''' + @ActualType + ''')' ELSE '' END;
EXEC tSQLt.Fail @Message, @Msg;
RETURN 1;
END;
END;
END;
RETURN 0;
END;
---Build-
GO