You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server技术求助:基于AP数据库创建spFindInvoices存储过程

没问题,我来帮你搞定这个SQL Server存储过程的需求!

解决方案:创建spFindInvoices存储过程

基于AP示例数据库的表结构(默认包含Vendors和Invoices表),我帮你写好了符合要求的存储过程,附带测试说明:

存储过程代码

USE AP;
GO

-- 用CREATE OR ALTER避免重复创建报错,存在则修改,不存在则新建
CREATE OR ALTER PROCEDURE spFindInvoices
    @NameVendor VARCHAR(100), -- 长度匹配Vendors表的VendorName字段,可根据实际调整
    @BalanceLimit SMALLMONEY
AS
BEGIN
    SET NOCOUNT ON; -- 屏蔽"影响X行"的额外输出,让结果更简洁

    -- 关联供应商和发票表,筛选符合条件的记录
    SELECT
        v.VendorName,
        i.InvoiceNumber,
        i.InvoiceDueDate,
        -- 按AP库逻辑计算发票余额:总额 - 已付款 - 信用额度
        (i.InvoiceTotal - i.PaymentTotal - i.CreditTotal) AS Balance
    FROM
        Vendors v
    INNER JOIN
        Invoices i ON v.VendorID = i.VendorID
    WHERE
        v.VendorName = @NameVendor
        AND (i.InvoiceTotal - i.PaymentTotal - i.CreditTotal) > @BalanceLimit
    ORDER BY
        i.InvoiceDueDate; -- 按到期日期排序,方便查看优先级
END;
GO

关键逻辑说明

  • 余额计算:采用AP示例库的标准逻辑,确保只返回未结清且余额超过指定限额的发票
  • 关联表:通过VendorID外键关联供应商和发票表,保证数据的准确性
  • 容错处理:CREATE OR ALTER语句避免了重复创建存储过程时的报错

测试调用示例

按照你指定的参数测试:

EXEC spFindInvoices
    @NameVendor = 'Federal Express Corporation',
    @BalanceLimit = 0;

这个调用会返回联邦快递所有余额大于0的未结清发票,包含供应商名称、发票编号、到期日期和对应余额。

如果想验证边界情况,比如传入不存在的供应商名称,会返回空结果集,符合预期逻辑:

EXEC spFindInvoices
    @NameVendor = '测试供应商',
    @BalanceLimit = 0;

内容的提问来源于stack exchange,提问作者gjones2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:12:07