繁体   English   中英

存储过程困难

[英]Stored Procedures Difficulty

我正在使用SQL Server,但遇到了问题。 任何帮助,将不胜感激!

使用AP数据库中创建一个存储过程调用spFindInvoices接受两个参数: @NameVendor类型varchar@BalanceLimit类型smallmoney

此过程将显示VendorName,InvoiceNumber,InvoiceDueDate和@NameVendor的余额,其中余额大于@BalanceLimit。 如果使用@NameVendor = 'Federal Express Corporation'@BalanceLimit = 0调用/测试该过程,将显示下表:

(my code)
USE AP;
GO

CREATE PROC spInvoices
     @NameVendor VARCHAR(50),
     @BalanceLimit SMALLMONEY
AS
    SELECT 
        VendorName, InvoiceNumber, InvoiceDueDate, 
        (InvoiceTotal - CreditTotal - PaymentTotal) AS Balance
    FROM 
        Invoices 
    JOIN 
        Vendors ON Invoices.VendorID = Vendors.VendorID
    WHERE 
        @NameVendor > @BalanceLimit
GO

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

我不能完全确定我是否了解您的要求,但是如果我是正确的话,我相信您正在为指定的供应商寻找高于指定金额的所有余额

USE AP;
GO

CREATE PROC spInvoices
     @NameVendor VARCHAR(50),
     @BalanceLimit SMALLMONEY
AS
    SELECT 
        VendorName, InvoiceNumber, InvoiceDueDate, 
        (InvoiceTotal - CreditTotal - PaymentTotal) AS Balance
    FROM 
        Invoices 
    JOIN 
        Vendors ON Invoices.VendorID = Vendors.VendorID
    WHERE 
        @BalanceLimit > (InvoiceTotal - CreditTotal - PaymentTotal)
    AND 
        @NameVendor = VendorName
GO

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

当您应该将VARCHAR @VendorName和SMALLMONEY @BalanceLimit相互比较时,您应该将它们与查询中的相应值进行比较

此代码应工作:

CREATE PROC spInvoices
     @NameVendor VARCHAR(50),
     @BalanceLimit SMALLMONEY
AS
    SELECT 
        VendorName, InvoiceNumber, InvoiceDueDate, 
        (InvoiceTotal - CreditTotal - PaymentTotal) AS Balance
    FROM 
        Invoices 
    JOIN 
        Vendors ON Invoices.VendorID = Vendors.VendorID
    WHERE 
        @NameVendor  = Vendors.VendorName
        (InvoiceTotal - CreditTotal - PaymentTotal) > @BalanceLimit

但是,也许您需要明确地将您的列: InvoiceTotalCreditTotalPaymentTotalsmallmoney datattytpe,如果该列的类型不是smallmoney

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM