Hi All
I want to create a stored procedure that creates a new database with tables, triggers and its own set of stored procedures each time the stored procedure is executed. Creating the tables is easy but now trying to create a trigger I get a error saying that I'm not using the correct database and if I try to include the USE statement in the Create trigger it returns a error saying the CREATE TRIGGER statement needs to be first in the Query. Please help me as this is critical. Please see code below. Thank you in advance
DECLARE @Retailer VARCHAR(30)
SET @Retailer = 'RetailerName'
SET @Retailer = '[OTA_' + @Retailer + ']'
DECLARE @CreateVoucherMoveTrigger NVARCHAR(4000)
SET @CreateVoucherMoveTrigger =
'USE ' + @Retailer + '
GO
CREATE TRIGGER [dbo].[UpdateVoucherStock]
ON '+ @Retailer +'.[dbo].[TempVoucherUpload]
AFTER INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for trigger here
INSERT INTO ' + @Retailer + '.[dbo].[VoucherStock]
([Network]
,[RatePerProvider]
,[SumOfVoucher]
,[Status]
,[Chain]
,[DateTimeStamp])
SELECT (LEFT(TVP.[ProductCode],(CHARINDEX(''_'',TVP.[ProductCode])-1))) AS [Network]
,RIGHT(TVP.[ProductCode],(LEN(TVP.[ProductCode])-CHARINDEX(''_'',TVP.[ProductCode]))) AS [RatePerProvider]
,TVP.[Vouchers]
,TVP.[Status]
,TVP.[Chain]
,TVP.[ReportDate]
FROM ' + @Retailer + '.[dbo].[TempVoucherUpload] AS TVP
LEFT JOIN ' + @Retailer + '.[dbo].[VoucherStock] AS VS
ON (LEFT(TVP.[ProductCode],(CHARINDEX(''_'',TVP.[ProductCode])-1))) = VS.[Network]
AND RIGHT(TVP.[ProductCode],(LEN(TVP.[ProductCode])-CHARINDEX(''_'',TVP.[ProductCode]))) = VS.[RatePerProvider]
AND TVP.[Chain] = VS.[Chain]
AND TVP.[ReportDate] = VS.[DateTimeStamp]
WHERE VS.[Network] IS NULL
DELETE FROM ' + @Retailer + '.[dbo].[TempVoucherUpload]
END
GO'
PRINT @CreateVoucherMoveTrigger
execute sp_executesql @CreateVoucherMoveTrigger
Weird thing is the Message returned when placed in a new query window it works perfectly?