ALTER PROCEDURE QSP_GET_BACK_SIGN
    @site varchar(20)
AS
BEGIN
    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

    DECLARE @b3 int
    DECLARE @b4 int
    SELECT @b3 = b3, @b4 = b4 FROM b_arg 

    SELECT
        0 AS ischecked,          
        a.unit,   
        a.billno,   
        a.billdate,   
        a.bsite,   
        a.esite,
        a.address,
        a.state,
        a.shipper,
        a.consignee,   
        a.product,   
        a.qty,         
        backqty,
        s1 = CASE WHEN ISNULL(fetchdate, '') <> '' THEN 1 ELSE 0 END,
        s2 = CASE WHEN ISNULL(modifyremark, '') <> '' THEN 1 ELSE 0 END,
        s3 = CASE WHEN ISNULL(isbad, 0) > 0 THEN 1 ELSE 0 END,
        s4 = CASE WHEN ISNULL(outinoneflag, '') = '' THEN 0 ELSE 1 END,
        acctype,
        accnow,
        accarrived,
        accback,
        accmonth,
        accdaishou,
        acczz,
        accsend,
        webid,
        createby,
        outcygs,
        outdate,
        shippertel,
        shippermb,
        a.middlesite,
        outbillno,
        vipno,
        addr,
        weight,
        volumn,
        fapiaono,
        shippercompany,
        consigneecompany,
        acchuokuankou,
        acctotal,
        acctax,
        a.tyddate
    FROM B_TYD AS a 
    LEFT JOIN b_tyd_trace_tpl AS b 
    ON (a.unit = b.unit)   
    WHERE 
        (a.esite = @site 
        OR a.middlesite = @site 
        OR (a.bsite = @site AND @b4 = 1) 
        OR (a.bsite = @site AND ((a.state = 10 AND tosite = 0) OR okprocess = '司机直送')))
        AND signdate IS NULL 
        AND ISNULL(backrecipient, '') = ''
        AND ISNULL(a.backqty, '') <> ''
        AND a.state <> 100 
        AND a.state <> 11
END
GO

该存储过程 QSP_GET_BACK_SIGN 用于查询待签收的退货信息。该存储过程通过以下步骤完成:

  1. 设置事务隔离级别为 READ UNCOMMITTED。
  2. 声明两个变量 @b3 和 @b4,用于存储 b_arg 表中的 b3 和 b4 列的值。
  3. 从 b_arg 表中查询 b3 和 b4 列的值,并分别赋值给 @b3 和 @b4 变量。
  4. 执行 SELECT 语句,查询 B_TYD 表和 b_tyd_trace_tpl 表的关联数据。
  5. 在 WHERE 子句中,根据 @site 参数和一些其他条件筛选出符合条件的数据。
  6. 最后,将查询结果返回给调用者。

该存储过程的代码简洁易懂,注释清晰,方便理解和维护。

以下是一些关于该存储过程的补充说明:

  • 该存储过程使用了 LEFT JOIN 连接 B_TYD 表和 b_tyd_trace_tpl 表。
  • 在 WHERE 子句中,使用了 OR 和 AND 条件来筛选出符合条件的数据。
  • 该存储过程查询的是待签收的退货信息,所以 WHERE 子句中包含了 signdate IS NULL 和 ISNULL(backrecipient, '') = '' 的条件。
  • 该存储过程还使用了 ISNULL 函数来处理空值。

希望本文档对您理解该存储过程有所帮助。如果您有任何问题,请随时提出。


原文地址: https://www.cveoy.top/t/topic/op6s 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录