在SQL Server中将一个存储过程调用到另一个存储过程时出错了?

问题描述

我想通过将相同的参数(SP_COLLECTIONSP_REPORT)传递给两个过程来从第一个过程(D1)中调用第二个过程(DIV

R_SP_REPORT:第一个过程

CREATE PROC R_SP_REPORT
    @D1 DATETIME,@DIV VARCHAR(10)
AS 
BEGIN
    SELECT 
        A.TRNDATE,A.DIVISION,A.USER,... etc...
    FROM 
        REPORT A 
    INNER JOIN 
        REPORT_MAIN B ON A.ID = B.ID 
                      AND A.DIVISION = B.DIV  
    WHERE 
        LEFT(A.ID,2) IN ('SI')  
        AND a.TRNDATE = @d1 
        AND a.DIVISION = @div
    GROUP BY 
        TRNDATE,DIVISION,USER
    
    --I want to call here R_SP_COLLECTION stored procedure 
    BEGIN 
        EXEC R_SP_COLLECTION @d1 = @d1,@div = @div  // Do something here.. I am not gatting data from 
         //second stored procedure.. 
    END
END

R_SP_COLLECTION:第二步

 CREATE PROCEDURE R_SP_COLLECTION
     @D1 DATETIME,@DIV VARCHAR(10)
 AS 
 BEGIN
     SELECT 
         PostDateTime,NAME 
     FROM 
         SalesEntry 
     WHERE 
         PostDateTime = @d1 
         AND DIVISION = @div
 END

我正在从第一个过程@D1传递@DivR_SP_REPORT参数,我想将它们发送到{{1}的PostDateTimeDivision }

那我该怎么做呢?需要帮助

更新:出现此错误后,我尝试按如下所示在查询中转换日期时间,但仍然收到相同的错误

R_SP_COLLECTION

错误,在执行第一个过程时

警告:通过聚合或其他SET操作消除了空值。

信息8114,级别16,状态5,过程R_SP_COLLECTION,第0行
将数据类型nvarchar转换为datetime时出错

解决方法

对于sql server,请尝试: 执行R_SP_COLLECTION @ D1,@ DIV