i have scenario wherein sp implemented dynamic query , need remove implementation due performance factor. import functionality , insert our data excel staging table , there validate our data keeping data temp table. , inserting data physical tables if validation passes.
staging table can have 4 category of data(fparty, sparty, tparty, owner) being passed excel staging 1 @ time. , physical table these category contains different number of columns. hence @ runtime able know category of data , have create temp table accordingly validate data.
as of using dynamic query create temp table @ run time depending on category. procedure follow:
create procedure [dbo].[getdata_into_temptbl] ( ,@categorytype varchar(50) -- fparty, sparty, tparty, owner) begin declare category cursor select fields dbo.stagingtable categoryname= @categorytype open category fetch next category @field while @@fetch_status = 0 begin set @fieldstocreatetemptable = @ fieldstocreatetemptable + ',' + @field fetch next category @field end close category deallocate category set @tbltemp = 'insert #temptabledata ('+@fieldstocreatetemptable+')' exec(@tbltemp) end above code working fine need replace dynamic nature of procedure. kindly suggest concept.
a table/cursor build comma separated list of columns overkill, major overkill.
you consider unwinding logic 4 simple stored procedures, can called based on logic, such categorytype
if @categorytype = 'fparty' begin exec dbo.insertfpartytempdata end else if @categorytype = 'sparty' begin exec dbo.insertspartytempdata end ... // etc
Comments
Post a Comment