错误:操作数类型冲突:日期与 int 不兼容
我正在尝试构建一个涉及三个存储过程的进程(它们分别由其他进程调用,从而消除了组合它们的能力),其中第一个返回一个日期,然后将其用于下一个过程的参数,以及过程重复第三次(第二个过程的返回值用作第三个过程的参数)。
下面的代码显示了一个简化的类似过程,其中一个过程应该返回一个日期,然后将由下一个过程使用:
CREATE TABLE Pass(
ID SMALLINT IDENTITY(1,1),
IDDate DATE
)
INSERT INTO Pass (IDDate)
VALUES (DATEADD(DD,-1,GETDATE()))
, (GETDATE())
, (DATEADD(DD,1,GETDATE()))
CREATE PROCEDURE s_One
AS
BEGIN
DECLARE @date DATE
SET @date = DATEADD(DD,1,GETDATE())
RETURN @date -- generates the error
END
CREATE PROCEDURE s_Two
@date DATE
AS
BEGIN
SELECT *
FROM IDDate
WHERE [IDDate] = @date
END
DECLARE @d DATE
EXEC @d = s_One
SELECT @d
EXEC s_Two @d
根据链接的文章,理论上,返回的值应该能够用作下一个过程的参数,尽管我看到的错误是操作数类型与日期和 int 冲突:
消息 206,级别 16,状态 2,过程 s_One,第 6 行操作数类型冲突:日期与 int 不兼容
需要的最终更改:
CREATE PROCEDURE s_One
( @date DATE OUTPUT )
AS
BEGIN
SELECT @date = DATEADD(DD,1,GETDATE())
END
DECLARE @d DATE
EXEC s_One @d OUTPUT
SELECT @d
EXEC s_Two @d