2005
09.22
09.22
昨天做了一下MS的两个题目。一个SQL的,一个C/C++的。
C++的问题比较容易,很快搞定后,赶紧下载SQL Server Personal Editon,做SQL题目。以前也没写过Stored Procuedure,又赶紧看manual,现学现卖了。
两个题目,我的解答是这样的
C++
Node* Revert(Node* head, Node* offset)
{
Node* node = head;
Node* next;
Node* prior = (offset == 0 ? 0 : offset->next);
while (node)
{
next = node->next;
node->next = prior;
if (node == offset) break;
prior = node;
node = next;
}
return node;
}
SQL
CREATE PROCEDURE DeletePost @post_id INT AS
DECLARE @cid INT
DECLARE @pid INT
DECLARE @tid INT
SELECT @pid = @post_id
SELECT @tid = TopicID FROM tbl_Posts
WHERE PostID = @post_id
WHILE (SELECT COUNT(PostID) FROM tbl_Posts
WHERE PostID <> @post_id AND ParentID = @post_id) > 0
BEGIN
SELECT TOP 1 @cid = PostID FROM tbl_Posts
WHERE PostID <> @post_id AND ParentID = @pid
IF (@cid = @pid)
BEGIN
-- print @cid
DELETE FROM tbl_Posts WHERE PostID = @cid
SELECT @pid = @post_id
END
ELSE
BEGIN
SELECT @pid = @cid
END
END
DELETE FROM tbl_Posts WHERE PostID = @post_id
GO