【发布时间】:2014-06-17 15:42:24
【问题描述】:
为什么我在一个 SP 调用另一个 SP 时收到此错误。如果我调用 SP 目录,它工作得很好。
消息 257,级别 16,状态 3,过程 TEST1,第 25 行
不允许从数据类型 datetime 到 int 的隐式转换。使用 CONVERT 函数运行此查询。
SP1 -> SP
ALTER PROCEDURE [TEST].[TEST1]
@EventId INT = NULL,
@MemberId INT = NULL,
@Type INT = NULL,
@Scheduled BIT = 0,
@DivisionId INT = NULL,
@DivisionTeamId INT = NULL,
@Date DATETIME = NULL,
@GymCourtId INT = NULL
AS
开始 设置无计数; 将事务隔离级别设置为未提交;
CREATE TABLE #GridGames (
[Id] [int] NOT NULL,
[Number] [int] NULL,
[Round] [int] NULL,
[GameType] [int] NULL,
.
.
.
.
INSERT INTO #GridGames
EXEC [TEST].[TEST] @EventId, @MemberId, @Type, @Scheduled, @DivisionId, @DivisionTeamId, @Date, @GymCourtId
SP
ALTER PROCEDURE [TEST].[TEST]
@EventId INT = NULL,
@MemberId INT = NULL,
@Type INT = NULL,
@Scheduled BIT = 0,
@DivisionId INT = NULL,
@DivisionTeamId INT = NULL,
@Date DATETIME = NULL,
@GymCourtId INT = NULL
AS
BEGIN
DECLARE @DayAhead DATETIME;
IF(@Date IS NOT NULL)
BEGIN
SET @DayAhead = DATEADD (DAY , 1 , @Date);
END
SELECT
game.Id,
game.[Type] AS GameType,
game.[Date],
更新
第 25 行指向嵌套存储过程中的 game.[Date],但这是一个 datetime null 类型,我的临时表也有,有什么用?
【问题讨论】:
-
也许您对
#GridGames的定义与TEST.TEST生成的结果集不匹配?并且错误是在TEST1的第25行报告的,而不是TEST,因此TEST中的@DayAhead代码无关紧要。 -
@Damien_The_Unbeliever 是对的。检查#GridGames 的定义并将其与TEST.TEST 生成的结果的数据类型匹配
-
该定义是从该 SP 生成的,该 SP 生成了一个具有该类型的表,因此它不可能是,而且我没有看到其他可能与 int 相关的数据时间,因为这些列都是日期时间。
标签: sql sql-server stored-procedures