Query to create dynamic Select statements for automation process.
The Query will create a query assuming data flows from a sql 2005 and up
or from sql 2005 and below. It cast the xml and varcha(max) to text fields.
Query to create dynamic Select statements for automation process.
The Query will create a query assuming data flows from a sql 2005 and up
or from sql 2005 and below. It cast the xml and varcha(max) to text fields.
/*******Create Dynamic Select Qry***********
 ****Jorge L. Novo DBA********************/ 
 /**** Variables*******/declare @TableName varchar(80) ---Name of table 
declare @Qtry varchar (8000) ----Final Qry Result
declare @Column varchar (8000)----Columns of Qry
declare @IsSql2000 int --- SQL 2005 to 2000 Indicator
/***********Set Values *******/set @Qtry = 'Select '  
set @TableName = 'TableNameHere' -----Table Name for Qry
set @IsSql2000 = 1 ----SQL2000 Indicator 0 = moving data from sql2005 and above, 1= moving data from 2005 and below
/****Lets the magic begin******/select c.name as ColumnName,c.colid,t.name as ctype,c.length as clength 
into #Qrty from syscolumns c
inner join sysobjects o
on c.id = o.id
left outer join systypes t
on t.xtype = c.xtype 
where o.id = object_id (@TableName)
order by c.colid
/****Now the real work begin ****/if @IsSql2000 = 1
 begin 
    select @Column = 
    Coalesce(@column+',',' ')+
case when ctype = 'xml' then 'Cast(Cast( ['+ColumnName+'] as varchar(max))as text) as ['+ColumnName+']' else case when ctype ='varchar' and clength < 0 then 'Cast(['+ColumnName+'] as text)' else '['+ColumnName+'] as ['+ColumnName+']' end end 
from #Qrty
  end 
else
  begin 
  select @Column = Coalesce(@column+',',' ')+ '['+ColumnName+']'
 from #Qrty
 end 
 select @Qtry = @Qtry + @Column + ' From '+@TableName+' (Nolock)'
  select @Qtry
drop table  #Qrty
print 'See U later alligator'