Microsoft SQL Server : Временная таблица в Stored procedure
Сталкиваюсь с такой проблемой :
Я создаю хранимую процедуру в 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
Источник: Stack Overflow на русском