尽管在执行时声明了 OUTPUT 参数,但存储过程 returns NULL
Stored procedure returns NULL despite declaring OUTPUT parameter when executing
我创建了一个存储过程。但是当我执行它时,尽管我将“@total”声明为输出参数,但总是返回 'null' 值。
这是我的存储过程:
IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'[dbo].[GetTotalInsectsInTrap]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
DROP PROCEDURE [dbo].[GetTotalInsectsInTrap]
GO
CREATE PROCEDURE [dbo].[GetTotalInsectsInTrap]
@Date DATE, @Kind NVARCHAR, @TotalQuantity INT OUTPUT AS
BEGIN
SELECT
@TotalQuantity = SUM(CTD.Quantity)
FROM
CheckTrapDetails AS CTD
JOIN
CheckTraps AS CT
ON CT.Id = CTD.CheckTrapId
JOIN
Insects AS I
ON I.Id = CTD.InsectId
WHERE
CT.Date = @Date AND
I.Kind = @Kind
GROUP BY
I.Kind,
CT.Date
END
这是SSMS生成的执行代码:
USE [OP_Insect]
GO
DECLARE @return_value int,
@TotalQuantity int
EXEC @return_value = [dbo].[GetTotalInsectsInTrap]
@Date = '2021-05-04',
@Kind = N'Rầy nâu',
@TotalQuantity = @TotalQuantity OUTPUT
SELECT @TotalQuantity as N'@TotalQuantity'
SELECT 'Return Value' = @return_value
GO
这是结果:
result
我正在使用 SQL Server 2017 和 SSMS 18。非常感谢您的帮助。
我认为您需要在以下示例中为@Kind 指定nvarchar 字段的长度,例如nvarchar(50)。 .
CREATE PROCEDURE [dbo].[GetTotalInsectsInTrap]
@Date DATE, @Kind NVARCHAR, @TotalQuantity INT OUTPUT AS
没有数字的 nvarchar 通常默认为 nvarchar(1) - 我假设你的昆虫不被
调用
我创建了一个存储过程。但是当我执行它时,尽管我将“@total”声明为输出参数,但总是返回 'null' 值。
这是我的存储过程:
IF EXISTS (SELECT * FROM sysobjects WHERE id = object_id(N'[dbo].[GetTotalInsectsInTrap]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
DROP PROCEDURE [dbo].[GetTotalInsectsInTrap]
GO
CREATE PROCEDURE [dbo].[GetTotalInsectsInTrap]
@Date DATE, @Kind NVARCHAR, @TotalQuantity INT OUTPUT AS
BEGIN
SELECT
@TotalQuantity = SUM(CTD.Quantity)
FROM
CheckTrapDetails AS CTD
JOIN
CheckTraps AS CT
ON CT.Id = CTD.CheckTrapId
JOIN
Insects AS I
ON I.Id = CTD.InsectId
WHERE
CT.Date = @Date AND
I.Kind = @Kind
GROUP BY
I.Kind,
CT.Date
END
这是SSMS生成的执行代码:
USE [OP_Insect]
GO
DECLARE @return_value int,
@TotalQuantity int
EXEC @return_value = [dbo].[GetTotalInsectsInTrap]
@Date = '2021-05-04',
@Kind = N'Rầy nâu',
@TotalQuantity = @TotalQuantity OUTPUT
SELECT @TotalQuantity as N'@TotalQuantity'
SELECT 'Return Value' = @return_value
GO
这是结果: result
我正在使用 SQL Server 2017 和 SSMS 18。非常感谢您的帮助。
我认为您需要在以下示例中为@Kind 指定nvarchar 字段的长度,例如nvarchar(50)。 .
CREATE PROCEDURE [dbo].[GetTotalInsectsInTrap]
@Date DATE, @Kind NVARCHAR, @TotalQuantity INT OUTPUT AS
没有数字的 nvarchar 通常默认为 nvarchar(1) - 我假设你的昆虫不被
调用