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
相关产品推荐
相关产品推荐

