![](/img/trans.png)
[英]passing parameter values to stored procedure when calling from another procedure
[英]Calling stored procedure and passing parameter from another stored procedure
這是我的存儲過程,它根據作為XML參數傳遞給它的數組刪除行:
BEGIN
DECLARE @docHandle int
EXEC sp_xml_preparedocument @docHandle OUTPUT, @XMLDoc
DELETE Comments WHERE
ID IN (SELECT * FROM OPENXML(@docHandle, '/values/value1', 2) WITH (value1 INT '.'))
EXEC sp_xml_removedocument @docHandle
END
現在,我想調用另一個存儲過程(而不是DELETE)(執行分層刪除,它接收ID參數)
我怎樣才能做到這一點?
更新:這是我的第二個SP:
(
@ID int
)
AS
IF @ID<>1
BEGIN
CREATE TABLE #nodesC (id int primary key)
INSERT INTO #nodesC (id) VALUES (@ID )
WHILE @@rowcount > 0
INSERT INTO #nodesC
SELECT child.ID
FROM Comments child
INNER JOIN #nodesC parent ON child.ParentId = parent.id
WHERE child.ID NOT IN (SELECT id FROM #nodesC)
DELETE
FROM Comments
WHERE ID IN (SELECT id FROM #nodesC)
END
您不能直接將數組作為參數傳遞。 所以:
否則,有關如何處理此問題的權威文章是Erland Sommarskog撰寫的SQL Server 2005中的“ 數組和列表”。
您將需要一個光標。
DECLARE c CURSOR LOCAL FORWARD_ONLY FOR SELECT ... FROM OPENXML(...) WITH(...)
OPEN c
WHILE 1 <> 0 BEGIN
FETCH c INTO ...
IF @@fetchstatus <> 0 BREAK
EXEC ...
END
CLOSE c
DEALLOCATE c
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.