【发布时间】:2021-02-10 14:08:49
【问题描述】:
当我想使用存储过程 spTotalOverview3(见下文)时,我的 db 对象列表为空。
USE [ProdDB]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[spTotalOverview3]
@datefrom datetime,
@dateto datetime
AS
BEGIN
DECLARE @Counter INT
DECLARE @tmpyear INT = year (@datefrom)
SET @Counter=@tmpyear - 4
SET @datefrom = dateadd(year, -4,@datefrom)
SET @dateto = dateadd(year, -4,@dateto)
CREATE TABLE #DestinationTable
(
Jaar INT,
QTYTotaal INT,
QTYInterventie INT,
QTYPreventief INT,
QTYFacility INT,
QTYTechdefecten INT
)
WHILE ( @Counter <= @tmpyear)
BEGIN
INSERT INTO #DestinationTable (Jaar,QTYTotaal,QTYInterventie,QTYPreventief,QTYFacility,QTYTechdefecten)
SELECT @Counter, (Interventie+Preventief+Facility+techdefecten), Interventie,Preventief,Facility,Techdefecten FROM (
SELECT COUNT(*) as Interventie
FROM interventierapport
WHERE ([Datum] between @datefrom and @dateto)) as a,
(SELECT COUNT(*) as Preventief
FROM Preventief
WHERE ([Datum] between @datefrom and @dateto) and Datum is not null) as b,
(SELECT COUNT(*) as Facility
FROM Facility
WHERE ([Datum_Aanvraag] between @datefrom and @dateto)) as c,
(SELECT COUNT(*) as Techdefecten
FROM TechDefecten
WHERE ([Datum Aanvraag] between @datefrom and @dateto)) as d
SET @Counter = @Counter + 1
SET @datefrom = dateadd(year, +1,@datefrom)
SET @dateto = dateadd(year, +1,@dateto)
END
SELECT Jaar,QTYTotaal,QTYInterventie,QTYPreventief,QTYFacility,QTYTechdefecten FROM #DestinationTable
DROP TABLE #DestinationTable
END
当我执行它时,我确实得到了我的数据。
那么这里有什么问题呢?
更多信息: 在我不需要将值插入临时数据库的其他查询中,它曾经可以正常工作。 所以问题可能存在,但另一方面,mysql 没有问题,因为 sp 执行得很好,我想用作数据库对象的标头。
任何帮助将不胜感激。
【问题讨论】:
-
这个程序是一个可怕的节目,它可能已经写在一个单一的选择
标签: sql-server datasource