【发布时间】:2016-03-08 19:06:32
【问题描述】:
我有一个返回表的存储过程。该表中的一列是 T-SQL 函数的结果。该函数根据 ID 返回 0 或 1。存储过程接受存储在 XML 中的 ID。
这个函数相当复杂,这里我就省略了,但基本上函数ForeignVendor接受一个ID并返回0或1。
该函数接受一个 xml 参数并返回一个表。我需要这个功能。我希望重用它。
函数如下:
ALTER PROCEDURE ForeignVendors
@VendorIDs xml
AS
BEGIN
SET NOCOUNT ON;
SELECT
VEN_POName,
T.Item.value('@VendorID[1]', 'varchar(10)') AS "VendorID",
ForeignVendor(T.Item.value('@VendorID[1]', 'varchar(10)')) AS "ForeignFlag"
FROM
VEN V
JOIN
@VendorIDs.nodes('/Root/Vendor') AS T(Item) ON V.VEN_VendorID = T.Item.value('@VendorID[1]', 'varchar(10)')
END
我可以这样称呼它
exec [Rotair_ForeignVendors] N'<Root><Vendor VendorID="000010"/><Vendor VendorID="000011"/><Vendor VendorID="000198"/><Vendor VendorID="000021"/></Root>'
把它拿回来
NEMITZ TOOL CO. 000021 0
P & W CANADA HELICOPTER 000198 1
SHOP 000011 0
ILS 000010 0
一个报告需要知道最后一列中是否存在任何 1。我试图通过查询将结果传递给一个组,但这不起作用。
对处理此问题的最有效方法有何建议?
【问题讨论】:
标签: sql-server tsql stored-procedures