【问题标题】:Database Objects are empty for Stored Procedure存储过程的数据库对象为空
【发布时间】: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


【解决方案1】:

您似乎使用的是 SQL Server 而不是 MySQL。

对于问题本身,请检查尝试查看过程源代码的用户是否有权这样做。

【讨论】:

  • 他做到了。它正在与其他 sp 一起工作,我只是更改了一些东西,但没有任何许可。
  • @GertDeWilde 你改变了什么“一些东西”?
  • 就像我在帖子中提到的:我添加/需要插入临时数据库。所以虽然 sql 输出看起来没问题,但 VS 可能有问题?
【解决方案2】:

我刚刚找到了答案。

我需要添加: 如果 1=0 开始 设置 FMTONLY 关闭 结束

到我的存储过程的开头,现在它确实起作用了。 资源: https://www.youtube.com/watch?v=zaL7fbUou7E&ab_channel=techsapphire

只有在使用临时表时才会出现的奇怪问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 2012-01-27
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多