SQL Server 存储过程:获取待签收退货信息 (QSP_GET_BACK_SIGN)
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 用于查询待签收的退货信息。该存储过程通过以下步骤完成:
- 设置事务隔离级别为 READ UNCOMMITTED。
- 声明两个变量 @b3 和 @b4,用于存储 b_arg 表中的 b3 和 b4 列的值。
- 从 b_arg 表中查询 b3 和 b4 列的值,并分别赋值给 @b3 和 @b4 变量。
- 执行 SELECT 语句,查询 B_TYD 表和 b_tyd_trace_tpl 表的关联数据。
- 在 WHERE 子句中,根据 @site 参数和一些其他条件筛选出符合条件的数据。
- 最后,将查询结果返回给调用者。
该存储过程的代码简洁易懂,注释清晰,方便理解和维护。
以下是一些关于该存储过程的补充说明:
- 该存储过程使用了 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 著作权归作者所有。请勿转载和采集!