This post continues from our other post called T-SQL Bulk Insert-Output Part 5.
In this post we will be using temporary variables, which are a type of temporary tables in SSMS.
USE [myDatabase] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE PROCEDURE [dbo].[MyTempTable70] -- Add the parameters for the stored procedure here @SequenceNumber int AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; DECLARE @TotalAmount int SELECT @TotalAmount = SUM(cast(Amount as int)) FROM dbo.SimpleBulkInsert DECLARE @AB nvarchar(1) SELECT TOP 1 @AB = [CodeAB] FROM dbo.SimpleBulkInsert DECLARE @DetailLineNumber int SELECT @DetailLineNumber = Count(*) FROM dbo.SimpleBulkInsert DECLARE @JulianDate as nvarchar(7) SELECT TOP 1 @JulianDate = [JulianDate] FROM dbo.SimpleBulkInsert DECLARE @tempheader table (Column1 char(70)); DECLARE @tempdetails table (Column1 char(70)); DECLARE @temptrailer table (Column1 char(70)); DECLARE @tempall table (Column1 char(70)); INSERT INTO @tempheader SELECT cast('H' as CHAR(1)) + cast ('ABC COMPANY ' AS CHAR(20)) + cast(@JulianDate AS CHAR(7)) + cast (' ' AS CHAR(1)) + right('0000000' + cast(@SequenceNumber AS varchar(7)),7) + cast (' ' AS CHAR(1)) + cast ('X4HT8NMG8' AS CHAR(9)) INSERT INTO @tempdetails SELECT Cast('0000' AS CHAR(4)) + Cast(CodeAB AS CHAR(1)) + right('0000' + cast((row_number () over (order by LastName)) + 1 as varchar (4)),4) + cast(JulianDate AS CHAR(7)) + cast(' ' AS CHAR(2)) + cast('A_CONSTANT' AS CHAR(12)) + right('000000000000' + cast(Amount AS varchar(12)),12) + left(cast((FirstName + ' ' + LastName) AS char(16)),16) + Cast ('END' AS CHAR(3)) FROM dbo.SimpleBulkInsert INSERT INTO @temptrailer SELECT DISTINCT 'T' + cast(@AB as char(1)) + right('00000' + cast (@DetailLineNumber AS varchar(5)),5) + cast(' ' AS CHAR(1)) + right('000000000000' + cast(@TotalAmount AS varchar(12)),12) + cast(' ' AS CHAR(1)) + cast (@JulianDate as char(7)) FROM dbo.SimpleBulkInsert INSERT INTO @tempall SELECT * FROM @tempheader INSERT INTO @tempall SELECT * FROM @tempdetails INSERT INTO @tempall SELECT * FROM @temptrailer SELECT * FROM @tempall END GO
The output is as follows.
---------------------------------------------------------------------- HABC COMPANY 2017029 0000065 X4HT8NMG8 0000A00022017029 A_CONSTANT 000000098341John Johnson END 0000A00032017029 A_CONSTANT 000000000981Sally SalimanderEND 0000A00042017029 A_CONSTANT 000000023098Bob Smith END TA00003 000000122420 2017029 Return Value ------------ 0 (1 row(s) affected)