如何创建返回数组的SQL Server存储过程?

时间:2010-10-22 12:25:17

标签: sql sql-server tsql stored-procedures

很抱歉这可能是一个愚蠢的问题,但我是SQL Server的新手。这是我组织部门表的结构:

id int(16) -- simply unique id
sub_id int(16) -- this id of parent division in this table (if zero, than it don't have parent)
name VARCHAR(200) -- name of division

我需要创建一个简单的过程,它返回一些分区中的所有细分ID(也有顶级分区ID)。我想我需要在循环中使用subid的数组,但我不知道如何在SQL Serve中创建数组o_0(omg ..数组存在于(T)SQL语言中?=)。请帮忙。或者也许是另一种方式来获得它?

2 个答案:

答案 0 :(得分:3)

如果我正确理解了你的问题,你需要一个递归的CTE。

CREATE PROCEDURE dbo.foo
@id int
AS

WITH divisions AS
(
SELECT id, sub_id, name
FROM YourTable
WHERE id = @id
UNION ALL
SELECT y.id, y.sub_id, y.name
FROM YourTable y
JOIN divisions d ON d.id = y.sub_id
)

SELECT id, sub_id, name
FROM divisions

答案 1 :(得分:1)

SELECT id
FROM table
WHERE sub_id = @target
UNION ALL
SELECT @target