Skip to content

Commit d58abf0

Browse files
🐛 Fix Install assembly.sql ' s Dynamic query syntax error
1 parent 1d963e4 commit d58abf0

File tree

1 file changed

+80
-108
lines changed

1 file changed

+80
-108
lines changed

API_Consumer/clr_files/install_assembly.sql

Lines changed: 80 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -63,119 +63,91 @@ FETCH NEXT FROM db_cursor INTO @db;
6363
WHILE @@FETCH_STATUS = 0
6464
BEGIN
6565
BEGIN TRY
66-
-- Build dynamic SQL for each DB
67-
SET @dynamic_sql = '
68-
USE [' + @db + '];
66+
-- Change database context
67+
EXEC('USE [' + @db + ']');
6968

70-
-- =============================================
7169
-- Drop dependent stored procedures and functions
72-
-- =============================================
73-
IF OBJECT_ID(''[dbo].[APICaller_WebMethod]'') IS NOT NULL DROP PROCEDURE [dbo].[APICaller_WebMethod];
74-
IF OBJECT_ID(''[dbo].[APICaller_Web_Extended]'') IS NOT NULL DROP PROCEDURE [dbo].[APICaller_Web_Extended];
75-
IF OBJECT_ID(''[dbo].[APICaller_GET]'') IS NOT NULL DROP PROCEDURE [dbo].[APICaller_GET];
76-
IF OBJECT_ID(''[dbo].[APICaller_POST]'') IS NOT NULL DROP PROCEDURE [dbo].[APICaller_POST];
77-
IF OBJECT_ID(''[dbo].[APICaller_POSTAuth]'') IS NOT NULL DROP PROCEDURE [dbo].[APICaller_POSTAuth];
78-
IF OBJECT_ID(''[dbo].[APICaller_GETAuth]'') IS NOT NULL DROP PROCEDURE [dbo].[APICaller_GETAuth];
79-
IF OBJECT_ID(''[dbo].[APICaller_GET_Headers]'') IS NOT NULL DROP PROCEDURE [dbo].[APICaller_GET_Headers];
80-
IF OBJECT_ID(''[dbo].[APICaller_GET_Headers_BODY]'') IS NOT NULL DROP PROCEDURE [dbo].[APICaller_GET_Headers_BODY];
81-
IF OBJECT_ID(''[dbo].[APICaller_POST_Headers]'') IS NOT NULL DROP PROCEDURE [dbo].[APICaller_POST_Headers];
82-
IF OBJECT_ID(''[dbo].[APICaller_POST_JsonBody_Header]'') IS NOT NULL DROP PROCEDURE [dbo].[APICaller_POST_JsonBody_Header];
83-
IF OBJECT_ID(''[dbo].[APICaller_GET_Extended]'') IS NOT NULL DROP PROCEDURE [dbo].[APICaller_GET_Extended];
84-
IF OBJECT_ID(''[dbo].[APICaller_POST_Extended]'') IS NOT NULL DROP PROCEDURE [dbo].[APICaller_POST_Extended];
85-
IF OBJECT_ID(''[dbo].[APICaller_POST_Encoded]'') IS NOT NULL DROP PROCEDURE [dbo].[APICaller_POST_Encoded];
86-
87-
IF OBJECT_ID(''[dbo].[Create_HMACSHA256]'') IS NOT NULL DROP FUNCTION [dbo].[Create_HMACSHA256];
88-
IF OBJECT_ID(''[dbo].[GetTimestamp]'') IS NOT NULL DROP FUNCTION [dbo].[GetTimestamp];
89-
IF OBJECT_ID(''[dbo].[fn_GetBytes]'') IS NOT NULL DROP FUNCTION [dbo].[fn_GetBytes];
90-
91-
-- =============================================
70+
SET @dynamic_sql =
71+
'IF OBJECT_ID(''dbo.APICaller_WebMethod'') IS NOT NULL DROP PROCEDURE dbo.APICaller_WebMethod;'
72+
+ 'IF OBJECT_ID(''dbo.APICaller_Web_Extended'') IS NOT NULL DROP PROCEDURE dbo.APICaller_Web_Extended;'
73+
+ 'IF OBJECT_ID(''dbo.APICaller_GET'') IS NOT NULL DROP PROCEDURE dbo.APICaller_GET;'
74+
+ 'IF OBJECT_ID(''dbo.APICaller_POST'') IS NOT NULL DROP PROCEDURE dbo.APICaller_POST;'
75+
+ 'IF OBJECT_ID(''dbo.APICaller_POSTAuth'') IS NOT NULL DROP PROCEDURE dbo.APICaller_POSTAuth;'
76+
+ 'IF OBJECT_ID(''dbo.APICaller_GETAuth'') IS NOT NULL DROP PROCEDURE dbo.APICaller_GETAuth;'
77+
+ 'IF OBJECT_ID(''dbo.APICaller_GET_Headers'') IS NOT NULL DROP PROCEDURE dbo.APICaller_GET_Headers;'
78+
+ 'IF OBJECT_ID(''dbo.APICaller_GET_Headers_BODY'') IS NOT NULL DROP PROCEDURE dbo.APICaller_GET_Headers_BODY;'
79+
+ 'IF OBJECT_ID(''dbo.APICaller_POST_Headers'') IS NOT NULL DROP PROCEDURE dbo.APICaller_POST_Headers;'
80+
+ 'IF OBJECT_ID(''dbo.APICaller_POST_JsonBody_Header'') IS NOT NULL DROP PROCEDURE dbo.APICaller_POST_JsonBody_Header;'
81+
+ 'IF OBJECT_ID(''dbo.APICaller_GET_Extended'') IS NOT NULL DROP PROCEDURE dbo.APICaller_GET_Extended;'
82+
+ 'IF OBJECT_ID(''dbo.APICaller_POST_Extended'') IS NOT NULL DROP PROCEDURE dbo.APICaller_POST_Extended;'
83+
+ 'IF OBJECT_ID(''dbo.APICaller_POST_Encoded'') IS NOT NULL DROP PROCEDURE dbo.APICaller_POST_Encoded;'
84+
+ 'IF OBJECT_ID(''dbo.Create_HMACSHA256'') IS NOT NULL DROP FUNCTION dbo.Create_HMACSHA256;'
85+
+ 'IF OBJECT_ID(''dbo.GetTimestamp'') IS NOT NULL DROP FUNCTION dbo.GetTimestamp;'
86+
+ 'IF OBJECT_ID(''dbo.fn_GetBytes'') IS NOT NULL DROP FUNCTION dbo.fn_GetBytes;';
87+
EXEC(@dynamic_sql);
88+
9289
-- Drop assemblies
93-
-- =============================================
94-
IF EXISTS (SELECT * FROM sys.assemblies WHERE name = ''API_Consumer'') DROP ASSEMBLY [API_Consumer];
95-
IF EXISTS (SELECT * FROM sys.assemblies WHERE name = ''Newtonsoft.Json'') DROP ASSEMBLY [Newtonsoft.Json];
96-
IF EXISTS (SELECT * FROM sys.assemblies WHERE name = ''System.Runtime.Serialization'') DROP ASSEMBLY [System.Runtime.Serialization];
97-
IF EXISTS (SELECT * FROM sys.assemblies WHERE name = ''SMDiagnostics'') DROP ASSEMBLY [SMDiagnostics];
90+
SET @dynamic_sql =
91+
'IF EXISTS (SELECT * FROM sys.assemblies WHERE name = ''API_Consumer'') DROP ASSEMBLY [API_Consumer];'
92+
+ 'IF EXISTS (SELECT * FROM sys.assemblies WHERE name = ''Newtonsoft.Json'') DROP ASSEMBLY [Newtonsoft.Json];'
93+
+ 'IF EXISTS (SELECT * FROM sys.assemblies WHERE name = ''System.Runtime.Serialization'') DROP ASSEMBLY [System.Runtime.Serialization];'
94+
+ 'IF EXISTS (SELECT * FROM sys.assemblies WHERE name = ''SMDiagnostics'') DROP ASSEMBLY [SMDiagnostics];';
95+
EXEC(@dynamic_sql);
9896

99-
-- =============================================
10097
-- Create the updated assembly
101-
-- =============================================
102-
CREATE ASSEMBLY [API_Consumer]
103-
AUTHORIZATION dbo
104-
FROM ''' + @dll_path + '''
105-
WITH PERMISSION_SET = UNSAFE;
106-
107-
-- =============================================
108-
-- Recreate Procedures and Functions
109-
-- =============================================
110-
111-
CREATE PROCEDURE [dbo].[APICaller_WebMethod]
112-
@httpMethod NVARCHAR(MAX) NULL, @URL NVARCHAR(MAX) NULL, @JsonBody NVARCHAR(MAX) NULL
113-
AS EXTERNAL NAME [API_Consumer].[StoredProcedures].[APICaller_WebMethod];
114-
115-
CREATE PROCEDURE [dbo].[APICaller_Web_Extended]
116-
@httpMethod NVARCHAR(MAX) NULL, @URL NVARCHAR(MAX) NULL, @Headers NVARCHAR(MAX) NULL, @JsonBody NVARCHAR(MAX) NULL
117-
AS EXTERNAL NAME [API_Consumer].[StoredProcedures].[APICaller_Web_Extended];
118-
119-
CREATE FUNCTION [dbo].[Create_HMACSHA256]
120-
(@message NVARCHAR(MAX) NULL, @SecretKey NVARCHAR(MAX) NULL)
121-
RETURNS NVARCHAR(MAX)
122-
AS EXTERNAL NAME [API_Consumer].[UserDefinedFunctions].[Create_HMACSHA256];
123-
124-
CREATE FUNCTION [dbo].[GetTimestamp]()
125-
RETURNS NVARCHAR(MAX)
126-
AS EXTERNAL NAME [API_Consumer].[UserDefinedFunctions].[GetTimestamp];
127-
128-
CREATE FUNCTION [dbo].[fn_GetBytes]
129-
(@value NVARCHAR(MAX) NULL)
130-
RETURNS NVARCHAR(MAX)
131-
AS EXTERNAL NAME [API_Consumer].[UserDefinedFunctions].[fn_GetBytes];
132-
133-
CREATE PROCEDURE [dbo].[APICaller_GET]
134-
@URL NVARCHAR(MAX) NULL
135-
AS EXTERNAL NAME [API_Consumer].[StoredProcedures].[APICaller_GET];
136-
137-
CREATE PROCEDURE [dbo].[APICaller_POST]
138-
@URL NVARCHAR(MAX) NULL, @JsonBody NVARCHAR(MAX) NULL
139-
AS EXTERNAL NAME [API_Consumer].[StoredProcedures].[APICaller_POST];
140-
141-
CREATE PROCEDURE [dbo].[APICaller_POSTAuth]
142-
@URL NVARCHAR(MAX) NULL, @Token NVARCHAR(MAX) NULL, @JsonBody NVARCHAR(MAX) NULL
143-
AS EXTERNAL NAME [API_Consumer].[StoredProcedures].[APICaller_POST_Auth];
144-
145-
CREATE PROCEDURE [dbo].[APICaller_GETAuth]
146-
@URL NVARCHAR(MAX) NULL, @Token NVARCHAR(MAX) NULL
147-
AS EXTERNAL NAME [API_Consumer].[StoredProcedures].[APICaller_GET_Auth];
148-
149-
CREATE PROCEDURE [dbo].[APICaller_GET_Headers]
150-
@URL NVARCHAR(MAX) NULL, @Headers NVARCHAR(MAX) NULL
151-
AS EXTERNAL NAME [API_Consumer].[StoredProcedures].[APICaller_GET_Headers];
152-
153-
CREATE PROCEDURE [dbo].[APICaller_GET_Headers_BODY]
154-
@URL NVARCHAR(MAX) NULL, @JsonBody NVARCHAR(MAX) NULL, @Headers NVARCHAR(MAX) NULL
155-
AS EXTERNAL NAME [API_Consumer].[StoredProcedures].APICaller_GET_JsonBody_Header;
156-
157-
CREATE PROCEDURE [dbo].[APICaller_POST_Headers]
158-
@URL NVARCHAR(MAX) NULL, @Headers NVARCHAR(MAX) NULL
159-
AS EXTERNAL NAME [API_Consumer].[StoredProcedures].APICaller_POST_Headers;
160-
161-
CREATE PROCEDURE [dbo].[APICaller_POST_JsonBody_Header]
162-
@URL NVARCHAR(MAX), @Headers NVARCHAR(MAX), @jSON NVARCHAR(MAX)
163-
AS EXTERNAL NAME [API_Consumer].[StoredProcedures].APICaller_POST_JsonBody_Headers;
164-
165-
CREATE PROCEDURE [dbo].[APICaller_GET_Extended]
166-
@URL NVARCHAR(MAX) NULL, @JsonBody NVARCHAR(MAX) NULL, @Headers NVARCHAR(MAX) NULL
167-
AS EXTERNAL NAME [API_Consumer].[StoredProcedures].[APICaller_GET_Extended];
168-
169-
CREATE PROCEDURE [dbo].[APICaller_POST_Extended]
170-
@URL NVARCHAR(MAX) NULL, @Headers NVARCHAR(MAX) NULL, @JsonBody NVARCHAR(MAX) NULL
171-
AS EXTERNAL NAME [API_Consumer].[StoredProcedures].[APICaller_POST_Extended];
172-
173-
CREATE PROCEDURE [dbo].[APICaller_POST_Encoded]
174-
@URL NVARCHAR(MAX) NULL, @Headers NVARCHAR(MAX) NULL, @JsonBody NVARCHAR(MAX) NULL
175-
AS EXTERNAL NAME [API_Consumer].[StoredProcedures].APICaller_POST_Encoded;
176-
';
177-
178-
EXEC sp_executesql @dynamic_sql;
98+
SET @dynamic_sql =
99+
'CREATE ASSEMBLY [API_Consumer] AUTHORIZATION dbo FROM ''' + @dll_path + ''' WITH PERMISSION_SET = UNSAFE;';
100+
EXEC(@dynamic_sql);
101+
102+
-- Recreate Procedures and Functions (each in its own batch)
103+
SET @dynamic_sql = 'CREATE PROCEDURE dbo.APICaller_WebMethod @httpMethod NVARCHAR(MAX) NULL, @URL NVARCHAR(MAX) NULL, @JsonBody NVARCHAR(MAX) NULL AS EXTERNAL NAME [API_Consumer].[StoredProcedures].[APICaller_WebMethod];';
104+
EXEC(@dynamic_sql);
105+
106+
SET @dynamic_sql = 'CREATE PROCEDURE dbo.APICaller_Web_Extended @httpMethod NVARCHAR(MAX) NULL, @URL NVARCHAR(MAX) NULL, @Headers NVARCHAR(MAX) NULL, @JsonBody NVARCHAR(MAX) NULL AS EXTERNAL NAME [API_Consumer].[StoredProcedures].[APICaller_Web_Extended];';
107+
EXEC(@dynamic_sql);
108+
109+
SET @dynamic_sql = 'CREATE FUNCTION dbo.Create_HMACSHA256 (@message NVARCHAR(MAX) NULL, @SecretKey NVARCHAR(MAX) NULL) RETURNS NVARCHAR(MAX) AS EXTERNAL NAME [API_Consumer].[UserDefinedFunctions].[Create_HMACSHA256];';
110+
EXEC(@dynamic_sql);
111+
112+
SET @dynamic_sql = 'CREATE FUNCTION dbo.GetTimestamp() RETURNS NVARCHAR(MAX) AS EXTERNAL NAME [API_Consumer].[UserDefinedFunctions].[GetTimestamp];';
113+
EXEC(@dynamic_sql);
114+
115+
SET @dynamic_sql = 'CREATE FUNCTION dbo.fn_GetBytes (@value NVARCHAR(MAX) NULL) RETURNS NVARCHAR(MAX) AS EXTERNAL NAME [API_Consumer].[UserDefinedFunctions].[fn_GetBytes];';
116+
EXEC(@dynamic_sql);
117+
118+
SET @dynamic_sql = 'CREATE PROCEDURE dbo.APICaller_GET @URL NVARCHAR(MAX) NULL AS EXTERNAL NAME [API_Consumer].[StoredProcedures].[APICaller_GET];';
119+
EXEC(@dynamic_sql);
120+
121+
SET @dynamic_sql = 'CREATE PROCEDURE dbo.APICaller_POST @URL NVARCHAR(MAX) NULL, @JsonBody NVARCHAR(MAX) NULL AS EXTERNAL NAME [API_Consumer].[StoredProcedures].[APICaller_POST];';
122+
EXEC(@dynamic_sql);
123+
124+
SET @dynamic_sql = 'CREATE PROCEDURE dbo.APICaller_POSTAuth @URL NVARCHAR(MAX) NULL, @Token NVARCHAR(MAX) NULL, @JsonBody NVARCHAR(MAX) NULL AS EXTERNAL NAME [API_Consumer].[StoredProcedures].[APICaller_POST_Auth];';
125+
EXEC(@dynamic_sql);
126+
127+
SET @dynamic_sql = 'CREATE PROCEDURE dbo.APICaller_GETAuth @URL NVARCHAR(MAX) NULL, @Token NVARCHAR(MAX) NULL AS EXTERNAL NAME [API_Consumer].[StoredProcedures].[APICaller_GET_Auth];';
128+
EXEC(@dynamic_sql);
129+
130+
SET @dynamic_sql = 'CREATE PROCEDURE dbo.APICaller_GET_Headers @URL NVARCHAR(MAX) NULL, @Headers NVARCHAR(MAX) NULL AS EXTERNAL NAME [API_Consumer].[StoredProcedures].[APICaller_GET_Headers];';
131+
EXEC(@dynamic_sql);
132+
133+
SET @dynamic_sql = 'CREATE PROCEDURE dbo.APICaller_GET_Headers_BODY @URL NVARCHAR(MAX) NULL, @JsonBody NVARCHAR(MAX) NULL, @Headers NVARCHAR(MAX) NULL AS EXTERNAL NAME [API_Consumer].[StoredProcedures].APICaller_GET_JsonBody_Header;';
134+
EXEC(@dynamic_sql);
135+
136+
SET @dynamic_sql = 'CREATE PROCEDURE dbo.APICaller_POST_Headers @URL NVARCHAR(MAX) NULL, @Headers NVARCHAR(MAX) NULL AS EXTERNAL NAME [API_Consumer].[StoredProcedures].APICaller_POST_Headers;';
137+
EXEC(@dynamic_sql);
138+
139+
SET @dynamic_sql = 'CREATE PROCEDURE dbo.APICaller_POST_JsonBody_Header @URL NVARCHAR(MAX), @Headers NVARCHAR(MAX), @jSON NVARCHAR(MAX) AS EXTERNAL NAME [API_Consumer].[StoredProcedures].APICaller_POST_JsonBody_Headers;';
140+
EXEC(@dynamic_sql);
141+
142+
SET @dynamic_sql = 'CREATE PROCEDURE dbo.APICaller_GET_Extended @URL NVARCHAR(MAX) NULL, @JsonBody NVARCHAR(MAX) NULL, @Headers NVARCHAR(MAX) NULL AS EXTERNAL NAME [API_Consumer].[StoredProcedures].[APICaller_GET_Extended];';
143+
EXEC(@dynamic_sql);
144+
145+
SET @dynamic_sql = 'CREATE PROCEDURE dbo.APICaller_POST_Extended @URL NVARCHAR(MAX) NULL, @Headers NVARCHAR(MAX) NULL, @JsonBody NVARCHAR(MAX) NULL AS EXTERNAL NAME [API_Consumer].[StoredProcedures].[APICaller_POST_Extended];';
146+
EXEC(@dynamic_sql);
147+
148+
SET @dynamic_sql = 'CREATE PROCEDURE dbo.APICaller_POST_Encoded @URL NVARCHAR(MAX) NULL, @Headers NVARCHAR(MAX) NULL, @JsonBody NVARCHAR(MAX) NULL AS EXTERNAL NAME [API_Consumer].[StoredProcedures].APICaller_POST_Encoded;';
149+
EXEC(@dynamic_sql);
150+
179151
END TRY
180152
BEGIN CATCH
181153
-- Log the error

0 commit comments

Comments
 (0)