[英]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
但是,也许您需要明确地将您的列: InvoiceTotal
, CreditTotal
, PaymentTotal
为smallmoney
datattytpe,如果该列的类型不是smallmoney
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.