Microsoft SQL Server : Временная таблица в Stored procedure

Рейтинг: 0Ответов: 0Опубликовано: 18.07.2023

Сталкиваюсь с такой проблемой :

Я создаю хранимую процедуру в Microsoft SQL Server,что бы потом построить репорт в Report Builder. Проблема в том,что как только в моем коде появляется временная таблица - в Report Builder уже не находит fields- пишет "you must have at least one field for your dataset".

Но если я изменю его и уберу временную таблицу - то тогда fields находятся и я уже могу построить репорт. И так всегда со временными таблицами. Есть наитие что я делаю что то не так

вот код который я использую и который не работает

USE [InternalControlDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


ALTER PROCEDURE  [dbo].[ATM_Client]


@piradi AS nvarchar(50),
@startdate  AS date,
@enddate AS date


as
begin


select


     case when coalesce(per.PersonalN,per.legaln) is null then atm1.IssBankName else  coalesce(per.FirstName + ' '+per.LastName,per.LegalName) end as [Client] 
     ,[Amount] = a.AuthAmount
     ,[ვალუტა] = a.AuthCurrency
     ,[განაღდების თარიღი2] = left(a.AuthDateTime,16)
     ,[ბ.ფილიალი] = iif(atm.BranchId is not null, atm.BranchId, 0)
     ,[ბანკომატი] = a.CardAcceptor
     ,[პირადი] = coalesce(per.PersonalN,per.LegalN)

     into #ATM
from [CardModule].[dbo].[AtmTransactionsArch] as atm1 with (nolock)
    
    left join CardModule.[dbo].[Notifications]                    as a with (nolock)on atm1.TransUniqCode = a.TransUniqCode
    left join CredoBnk.dbo.TBL_Application              as app with (nolock)        on app.CardId = a.CardId           and a.CardId <> '0'    
    left join CredoBnk.dbo.tbl_Person                    as per with (nolock)        on per.Id = app.PersonId   
    left join CardModule.[dbo].[NotificationActionCodes] as b with (nolock)        on a.ActionCode = b.ActionCode
    left join [CashDesk].[Config].[vwATMList] as atm with (nolock) on a.TerminalId = atm.TerminalId

where a.AuthDateTime >= @startdate  and a.AuthDateTime <= @enddate
and atm1.TransactionType = '207'
and per.PersonalN = @piradi
 
order by a.AuthDateTime desc; 



select 


     [Client] = per.FirstName + ' '+per.LastName
     ,[Amount] = a.AuthAmount
     ,[ვალუტა] = a.AuthCurrency
     ,[განაღდების თარიღი2] = LEFT(a.AuthDateTime,16)
     ,[ბ.ფილიალი] = IIF(atm.BranchId IS NOT NULL, atm.BranchId, 0)
     ,[ბანკომატი] = a.CardAcceptor
     ,[პირადი] = per.PersonalN
     INTO #Card
from CardModule.[dbo].[Notifications]                    as a with (nolock)
    left join [CardModule].[dbo].[CardTransactionsArch]  AS CT with (nolock)        on CT.UniqCode = a.TransUniqCode
    inner join CredoBnk.dbo.TBL_Application              as app with (nolock)        on app.CardId = a.CardId           and a.CardId <> '0'    
    LEFT join CredoBnk.dbo.tbl_Person                    as per with (nolock)        ON per.Id = app.PersonId   
    LEFT join CardModule.[dbo].[NotificationActionCodes] as b with (nolock)        on a.ActionCode = b.ActionCode
    LEFT JOIN [CashDesk].[Config].[vwATMList] AS atm WITH (NOLOCK) ON a.TerminalId = atm.TerminalId

where a.AuthDateTime >= @startdate AND  a.AuthDateTime <= @enddate
and CT.TransactionType = '207'
AND per.PersonalN = @piradi

ORDER BY a.AuthDateTime desc



SELECT * 
FROM #ATM WITH (NOLOCK)
UNION 
SELECT *
FROM #Card WITH (NOLOCK)    

WHERE client IS NOT NULL   
ORDER BY [განაღდების თარიღი2] DESC  



END

Ответы

Ответов пока нет.