Quantcast
Channel: SQLServerCentral » SQL Server 2014 » Development - SQL Server 2014 » Latest topics
Viewing all articles
Browse latest Browse all 3145

Stored proc problem

$
0
0
HiI have a stored proc which doesn't seem to work properly, and I can's see why. Can someone cast a fresh set of eyes over it, and tell me what is wrong? The problem seems to be that the merge statement, and indeed anything after the dynamic sql execution, just doesn't run. Aplogies if I am missing something really obvious.CREATE PROCEDURE [BBM].[usp_CalculateBBMs] (@W_LoadId INT,@W_ErrMessage NVARCHAR(4000) OUTPUT)AS SET NOCOUNT ONBEGIN TRYSET @W_ErrMessage = ' 'DECLARE @W_SQL NVARCHAR(MAX)DECLARE @W_NoOfBBMs INTDECLARE @W_BBMId INTDECLARE @W_BBMLogic NVARCHAR(50)DECLARE @W_BBM_Version_Id INTDECLARE @W_BBM_Owner NVARCHAR(20) CREATE TABLE #BBMDetail (BBM_Id INT ,BBM_Date DATETIME ,BBM_Value DECIMAL(18,2) ,LoadId INT ,BBM_Version_Id INT ,BBM_Owner NVARCHAR(20) ) DECLARE @BBMList TABLE (ListId INT IDENTITY(1,1) ,BBM_Id INT ,BBM_Function NVARCHAR(50) ,BBM_Version_Id INT ,BBM_Owner NVARCHAR(20) ) -- Get List of Active BBMs to be Calculated INSERT INTO @BBMList(BBM_Id,BBM_Function,BBM_Version_Id,BBM_Owner)SELECT BBM_ID,BBM_Function,BBM_Version_Id,BBM_OwnerFROM BBM.BBM_Version WHERE Active = 1 -- Get the count of BBMs to be calculated SET @W_NoOfBBMs = (SELECT MAX(ListId) from @BBMList) -- Calculate Each BBM WHILE (@W_NoOfBBMs > 0)BEGIN -- Initialize VariablesSET @W_BBMId = -1SET @W_BBMLogic = ' 'SET @W_SQL = '' -- Set VariablesSET @W_BBMId = (SELECT BBM_Id FROM @BBMList WHERE ListId = @W_NoOfBBMs)SET @W_BBMLogic = (SELECT BBM_Function FROM @BBMList WHERE ListId = @W_NoOfBBMs)SET @W_BBM_Version_Id = (SELECT BBM_Version_Id FROM @BBMList WHERE ListId = @W_NoOfBBMs)SET @W_BBM_Owner = (SELECT BBM_Owner FROM @BBMList WHERE ListId = @W_NoOfBBMs)SET @W_SQL = 'INSERT INTO #BBMDetail ([BBM_Id] ,[BBM_Version_Id] ,[BBM_Owner] ,[BBM_Date] ,[BBM_Value] ,[LoadId]) ' SET @W_SQL = @W_SQL + 'SELECT ' + CAST (@W_BBMId AS VARCHAR(10)) +',' + CAST (@W_BBM_Version_Id AS VARCHAR(10)) +',' +'''' + CAST (@W_BBM_Owner AS VARCHAR(20)) +'''' + ', * ,' + CAST(@W_LoadId AS VARCHAR(10)) + ' FROM ' + @W_BBMLogic + '(' + CAST(@W_LoadId AS VARCHAR(10)) +')' PRINT @W_SQL --For Debugging --Execute SQLEXEC (@W_SQL) SET @W_NoOfBBMs = @W_NoOfBBMs - 1END -- MERGE Routine to Update / Insert BBM_detail--DebugPRINT 'Merge into BBM table'MERGE BBM.BBM_Detail AS TARGETUSING(SELECT BBM_Id,BBM_Date,BBM_Value,LoadId,BBM_Version_Id,BBM_Owner FROM #BBMDetail) AS SOURCEON TARGET.BBM_id = SOURCE.BBM_IdAND TARGET.BBM_Date = SOURCE.BBM_DateAND TARGET.BBM_Version_Id = SOURCE.BBM_Version_IDWHEN MATCHEDAND TARGET.BBM_Value <> SOURCE.BBM_ValueTHEN UPDATE SET TARGET.BBM_Value = SOURCE.BBM_Value, TARGET.LoadId = SOURCE.LoadIdWHEN NOT MATCHEDTHEN INSERT(BBM_Id,BBM_Date,BBM_Value,LoadId,BBM_Version_Id,BBM_Owner)VALUES(SOURCE.BBM_Id,SOURCE.BBM_Date,SOURCE.BBM_Value,SOURCE.LoadId,SOURCE.BBM_Version_Id,SOURCE.BBM_Owner); END TRY BEGIN CATCH-- Capture the Error MessageSELECT @W_ErrMessage = @W_SQL + ' ' + ERROR_MESSAGE() END CATCH

Viewing all articles
Browse latest Browse all 3145

Trending Articles