"with"句を使用してユーザー定義の関数/ユーザー定義プロシージャを作成することは可能ですか?関数/プロシージャ内の節付きのSQL Server 2014
CREATE FUNCTION udf_UsersComments (
@Id INT
)
RETURNS @UsersComments TABLE (
CommentTextFormatted NVARCHAR(MAX),
DateCommented NVARCHAR(MAX),
Username NVARCHAR(255),
ParentCommentId INT,
Id INT
)
AS
BEGIN
WITH UpperHierarchy (Id, QuestionId, CommentText, ParentCommentId, DateCommented, UserId, HierarchyOrder,
lineage)
AS (SELECT com.Id,
com.QuestionId,
com.CommentText,
com.ParentCommentId,
com.DateCommented,
com.UserId,
0 AS HierarchyOrder,
Cast ('/' AS VARCHAR(255)) AS Lineage
FROM Comments AS com
WHERE com.ParentCommentId IS NULL AND IsDeleted=0
UNION ALL
(SELECT com.Id,
com.QuestionId,
com.CommentText,
com.ParentCommentId,
com.DateCommented,
com.UserId,
HierarchyOrder + 1,
Cast(lineage + Ltrim(Str(com.ParentCommentId, 6, 0))
+ '/' AS VARCHAR(255))
FROM Comments AS com
INNER JOIN UpperHierarchy AS parent
ON com.ParentCommentId = parent.Id
WHERE com.IsDeleted=0))
SELECT CommentTextFormatted, DateCommented, U.Username, ParentCommentId, Com.id
FROM Questions AS Q
INNER JOIN
(SELECT Space(HierarchyOrder*5) + CommentText AS CommentTextFormatted, Id, QuestionId, ParentCommentId, DateCommented, UserId, lineage
FROM UpperHierarchy) AS Com
ON Com.QuestionId=Q.Id
INNER JOIN Users AS U
ON U.Id=Com.UserId
WHERE [email protected]
ORDER BY lineage + Ltrim(Str(Q.Id, 6, 0))
RETURN
END
GO
そして私は、このエラー
メッセージ444、レベル16、状態2、プロシージャudf_UsersComments、ライン クライアントにデータを返すことができない機能に含まれる13個の Select文を取得しています。
OPは自分でテストするのが怠惰なので、この質問をオフトピックとして閉じることにしました。試してみるのが良いアイデアです。もし期待どおりに動かなければ、行動について質問してください。 – danihp
はい。問題が発生している場合は、質問に試したコードを追加してください。 –
@DanGuzman done – john