sql server - T-SQL stored procedure - select just a few columns -


i have stored procedure selects columns table. need select few of them.

how assign variable select few columns table?

existing stored procedure code:

declare @databasename nvarchar(255) = n’adventureworksdw’ declare @schemaname nvarchar(255) = n’dbo’ declare @tablename nvarchar(255) = n’dimproduct’  begin set nocount on  -- declare parameters internal query declare @sqlstring nvarchar(max) = n” declare @paramdefinition nvarchar(max) = n” declare @columnlist table ( columnid int identity(1,1) , columnname nvarchar(255) , columnmaxlength int , columnminlength int )  declare @columnmaxlength int declare @columnminlength int declare @columncount int = 0 declare @loopcounter int = 1 declare @columnname nvarchar(255)  set @sqlstring = n’select column_name ‘ @databasename + n’.’ + n’information_schema.columns data_type in (”char”, ”nchar”, ”varchar”, ”nvarchar”) , table_schema = @schemaname , table_name = @tablename’  set @paramdefinition = n’@schemaname nvarchar(255), @tablename nvarchar(255)’  insert @columnlist (columnname)  execute sp_executesql @sqlstring, @paramdefinition, @schemaname, @tablename select @columncount = count(*) @columnlist  while (@loopcounter <= @columncount)  begin  select @columnname = columnname @columnlist columnid = @loopcounter  set @sqlstring = n’select ‘ ‘@columnminlength = min(len(‘ + @columnname + ‘))’ ‘, @columnmaxlength = max(len(‘ + @columnname + ‘))’ ‘ ‘ @databasename + n’.’ + @schemaname + n’.’ + @tablename ‘ (nolock) ‘  set @paramdefinition = n’@columnminlength int output, @columnmaxlength int output’  execute sp_executesql @sqlstring, @paramdefinition, @columnminlength output, @columnmaxlength output  update @columnlist  set columnminlength = @columnminlength , columnmaxlength = @columnmaxlength columnid = @loopcounter  set @loopcounter += 1  end  select columnname [column name] , columnminlength [column minimum length] , columnmaxlength [column maximum length] @columnlist order [column name]  end 

you can build dynamic sql query , execute follows

create procedure select_mytable (     @fieldlist nvarchar(max) ) declare @select nvarchar(max)  set @select = 'select ' + @fieldlist + ' mytable'  exec sp_executesql @select  go  declare @fieldlist nvarchar(max) = 'username,region' exec select_mytable @fieldlist 

Comments

Popular posts from this blog

1111. appearing after print sequence - php -

java - WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/board/] in DispatcherServlet with name 'appServlet' -

Ruby on Rails, ActiveRecord, Postgres, UTF-8 and ASCII-8BIT encodings -