我有一个问题,我正在努力解决,解决方案并不明显。由于我不能使用Text类型的临时变量,因此我无法解决这个问题。
第一个表(DocumentChunks)有两列 - DocumentID(int - 外键)和TextChunk(Text)
第二个表(Document)有很多列,包括DocumentID(int - 主键)和DocumentText(Text)
文件< - > DocumentChunks是一对多关系。
我需要将每个TextChunk值连同一个回车换行连接在一起,然后用它来更新Document表中相应的DocumentText列。
我见过很多使用临时变量的例子,但我不能使用它们。
所有建议都表示赞赏!
答案 0 :(得分:0)
你可以尝试一个标量函数。在更新查询中使用此选项,如:
SET DocumentText=fn_ConcatTextChunks(Document.DocumentID)
唯一的问题是您不能在标量函数中使用SQL Server 2000中的文本返回类型或局部变量。因此,如果您的数据太大,这将无效。
CREATE FUNCTION [dbo].[fn_ContatTextChunks]
(
@DocumentID int
)
RETURNS varchar(8000)
AS
BEGIN
-- Declare the return variable here
DECLARE @Result varchar(8000)
SELECT @Result = COALESCE(@Result + '\n', '') + CAST(dc.TextChunk As varchar)
FROM DocumentChunks dc
WHERE dc.DocumentID=@DocumentID
-- Return the result of the function
IF @Result IS NULL BEGIN
SET @Result = ''
END
RETURN @Result
END
但我想这值得一试。