Thursday, September 12, 2013

T-SQL Creating Dynamic Tables and Populating

T-SQL Creating Dynamic Tables and Populating

Im fairly new to T-SQL and could use some help with a Script I am writing.
The purpose of the script is to create dynamic tables and populate them
with related data. Currently Im getting a vague error which Im guessing is
caused because Im missing some syntax. The script is below. The idea is
that I will run the script one time to create and load these tables. This
process is part of a data migration project. Here's the error Im receiving
when I "Execute" the script. Any tips or suggestions are appreciated.
Thanks ahead of time.
ERROR
Msg 102, Level 15, State 1, Line 81
Incorrect syntax near 'getSFContactID'.
SCRIPT
USE mylocalDB;
GO
-- Declare variables to temporarily hold dynamic SQL scripts
DECLARE @V_SF_CONTACT_ID VARCHAR(18) = '',
@V_TABLESCRIPT NVARCHAR(MAX) = '',
@V_INSERTSCRIPT NVARCHAR(MAX) = '',
-- Declare variables to temporarily hold query records
@V_FIRST_NAME nvarchar(50) = '',
@V_LAST_NAME nvarchar(50) = '',
@V_COMPANY nvarchar(100) = '',
@V_ADDRESS_1 nvarchar(50) = '',
@V_ADDRESS_2 nvarchar(50) = '',
@V_CITY nvarchar(50) = '',
@V_STATE nvarchar(2) = '',
@V_ZIP nvarchar(10) = '',
@V_Phone nvarchar(20) = ''
DECLARE getSFContactID CURSOR
FOR SELECT distinct CONTACTSFID FROM xrefListContactToAccountKey
OPEN getSFContactID
FETCH NEXT FROM getSFContactID
INTO @V_SF_CONTACT_ID
WHILE @@FETCH_STATUS = 0
BEGIN
/******************************************************
BEGIN CREATING DYNAMIC TABLES
*******************************************************/
SET @V_TABLESCRIPT = '';
SET @V_INSERTSCRIPT = '';
IF OBJECT_ID(@V_SF_CONTACT_ID, 'U') IS NOT NULL
BEGIN
SET @V_TABLESCRIPT = 'CREATE TABLE [dbo].[' + @V_SF_CONTACT_ID + '](
[Key] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[FIRST_NAME] [nvarchar](50) NOT NULL,
[LAST_NAME] [nvarchar](50) NOT NULL,
[COMPANY] [nvarchar](100) NOT NULL,
[ADDRESS_1] [nvarchar](50) NOT NULL,
[ADDRESS_2] [nvarchar](50) NOT NULL,
[CITY] [nvarchar](50) NOT NULL,
[STATE] [nvarchar](2) NOT NULL,
[ZIP] [nvarchar](10) NOT NULL,
[Phone] [nvarchar](20) NULL,
CONSTRAINT [PK_' + @V_SF_CONTACT_ID + '] PRIMARY KEY NONCLUSTERED
([Key] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,
IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON
[PRIMARY]) ON [PRIMARY]';
--PRINT @V_SF_CONTACT_ID
EXEC (@V_TABLESCRIPT)
BREAK
SET @V_INSERTSCRIPT = 'INSERT INTO [dbo].[' + @V_SF_CONTACT_ID + ']
Select CL.FirstName as FIRST_NAME,
CL.LastName as LAST_NAME,
CL.COMPANY,
CL.Street as ADDRESS_1,
CL.Street2 as ADDRESS_2,
CL.CITY,
CL.[STATE],
CL.ZIP,
CL.Phone
FROM [dbo].[Contact] CL
WHERE CONTACTSFID = ''' + @V_SF_CONTACT_ID + '';
EXEC (@V_INSERTSCRIPT)
FETCH NEXT FROM getSFContactID INTO @V_SF_CONTACT_ID
END
CLOSE getSFContactID
DEALLOCATE getSFContactID

No comments:

Post a Comment