CREATE FUNCTION ( pTableName VARCHAR(128), pParentColumn VARCHAR(128), pChildColumn VARCHAR(128), pId INT, pDepth INT ) RETURNS INT BEGIN DECLARE vDeleted INT; DECLARE vChildrenCursor CURSOR WITH HOLD FOR SELECT FROM
WHERE = pId; DECLARE vChildId INT; SET vDeleted = 1; DELETE FROM
WHERE = pId; COMMIT; SET vDeleted = @@ROWCOUNT; IF vDeleted = 0 THEN RETURN vDeleted; END IF; IF pDepth = 0 THEN RETURN vDeleted; END IF; OPEN vChildrenCursor; FETCH FIRST FROM vChildrenCursor INTO vChildId; WHILE @@FETCH_STATUS = 0 DO SET vDeleted = vDeleted + (
, , , , pDepth – 1); FETCH NEXT FROM vChildrenCursor INTO vChildId; COMMIT; END WHILE; CLOSE vChildrenCursor; RETURN vDeleted; END;