Site Search:
Sign in | Join | Help
4Penny.net

SQL Server (T-SQL)

Comments and notes on SQL Server 2000, 2005, and T-SQL

script to create an insert statement

You'll need this script and one other:

f_4P_columnType

 

-- =============================================
-- 
-- =============================================
-- 1/1/1900 created
IF EXISTS (SELECT name 
    FROM   sysobjects 
    WHERE  name = N'sp_insert' 
    AND    type = 'P')
    DROP PROCEDURE sp_insert
GO


CREATE PROCEDURE sp_insert 
--  sp_insert '_commissionsnew'


@vchrTableName varchar(50)



AS


 


declare @fieldName varchar(500)
declare @fieldType varchar(50)
declare @intTableNameLen int
declare @vchrProcName varchar(50)
declare @vchrAlias varchar(2)
declare @vchrFieldList as varchar(8000)
declare @vchrFieldList2 as varchar(8000)
Declare @vchrParamList as varchar(8000)
Declare @vchrIntoList as varchar(8000)



select
 @vchrProcName = '_4P_' + @vchrTableName + '_INS',
 @vchrAlias = case when left(@vchrTableName,1) = '_' then substring(@vchrTableName,2,1) else left(@vchrTableName,1) end + '.',
 @intTableNameLen = len(@vchrTableName),
 @vchrFieldList = '',
 @vchrFieldList2 = '',
 @vchrParamList = '',
 @vchrIntoList = ''


select
 @vchrProcName = replace(@vchrProcName,'__','_')


print '-- ============================================='
print '-- '
print '-- ============================================='
print '-- 1/1/1900 created'
print 'IF EXISTS (SELECT name' 
print '    FROM   sysobjects '
print '    WHERE  name = N' + '''' + @vchrProcName + ''''
print '    AND    type = ''P'') '
print '    DROP PROCEDURE ' +  @vchrProcName 
print 'GO'
print 'CREATE PROCEDURE ' + @vchrProcName 
print ''


 


declare curFields CURSOR for
select syscolumns.name,
  dbo.f_4P_columnType(xusertype,length,xprec,xscale) as fieldType
 from sysobjects
  left join syscolumns on syscolumns.id = sysobjects.id
 where sysobjects.name = @vchrTableName
  and colstat <> 1



OPEN curFields



FETCH NEXT FROM curFields INTO @fieldName, @fieldType
WHILE @@FETCH_STATUS = 0
BEGIN
 if @fieldType <> 'text' begin
  set @vchrFieldList = @vchrFieldList + @fieldName + '  '  + ', '
  set @vchrFieldList2 = @vchrFieldList2 + @vchrAlias + @fieldName + ', '
  set @vchrParamList = @vchrParamList + <a href="mailto:'@'">'@'</a> + @fieldName + ' ' + @fieldtype + ',' + char(13) + char(10)
  set @vchrIntoList = @vchrIntoList <a href="mailto:+'@'">+'@'</a> + @fieldName + ' , '
 end
 FETCH NEXT FROM curFields INTO @fieldName, @fieldType
END
CLOSE curFields
DEALLOCATE curFields



set @vchrFieldList = left(@vchrFieldList, len(@vchrFieldList) - 1)
set @vchrFieldList2 = left(@vchrFieldList2, len(@vchrFieldList2) - 1)
set @vchrParamList = left (@vchrParamList,len(@vchrParamList)-3)
set @vchrIntoList = left (@vchrIntoList,len(@vchrIntoList)-1)
--  sp_insert 'XPOTrans_HIST'



print @vchrParamList
print ''
print 'AS'
PRINT ''
 
print  'INSERT INTO ' + @vchrTableName + ' (' + @vchrFieldList + ')'
print  '    SELECT    ' + space(@intTableNameLen) + @vchrFieldList2 
print  '        FROM '



PRINT ''
PRINT ''
print 'INSERT INTO  ' + @vchrTableName + ' (' + @vchrFieldList + ')'
print space(len(@vchrProcName)) + 'values(' + @vchrIntoList + ')'
PRINT ''
PRINT 'GO'
print '' 
print 'grant exec on ' + @vchrProcName + ' to public'



go


 


grant exec on sp_insert to public  

Comments

No Comments

About Steve Gray

Steve is a seasoned (translate: old) developer in VB and ASP.NET. He spends most of his time in Dynamics GP, writing custom mods for consulting firms. Crystal reports, eConnect, VS Tools for Dynamics... anything that comes along.