現在、ストアド プロシージャに次の SQL ステートメントがあります。
SELECT [Id],
[Path],
[Title],
[Description]
FROM [Configuration].[Pages] p
WHERE
((p.Id = @Id) OR (@Id IS NULL)) AND
((p.Path = @Path) OR (@Path IS NULL))
これにより、ページのパス、ページの ID、または何も渡さない (すべてを返す) ことができます。
返されたレコードごとに DB に戻るのではなく、関連する子レコード (1 から M) を返すようにこれをリファクタリングしようとしています。子レコードの現在の SQL は次のとおりです。
SELECT h.Id, h.Description, h.Title, h.[Content]
FROM [Configuration].[HelpItems] h INNER JOIN
[Configuration].[PageHelpItems] ph ON h.Id = ph.HelpId
WHERE (ph.PageId = @PageId)
現在、各親レコードをループして、それぞれに対してこのストアド プロシージャを呼び出していますが、これは非効率的であると考えており、すべての親に対して子レコードが確実に返されるように、SP を使用して 1 つ以上の SQL ステートメントを作成したいと考えています。