Как использовать объединенные несколько строк TEXT для обновления другого столбца TEXT в SQL Server 2000? - PullRequest
1 голос
/ 17 мая 2011

У меня есть проблема, которую я пытаюсь решить, и решение не очевидно. Поскольку я не могу использовать временные переменные типа Text, у меня возникли некоторые проблемы при получении этого выяснения.

Первая таблица (DocumentChunks) имеет два столбца - DocumentID (int - внешний ключ) и TextChunk (Text)

Вторая таблица (Document) имеет много столбцов, включая DocumentID (int - первичный ключ) и DocumentText (Text)

Document <-> DocumentChunks - это отношение один ко многим.

Мне нужно объединить все значения TextChunk вместе с переводом строки каретки после каждого и использовать его для обновления соответствующего столбца DocumentText в таблице документов.

Я видел множество примеров использования временных переменных, но я не могу их использовать.

Все предложения приветствуются!

1 Ответ

0 голосов
/ 17 мая 2011

Ну, вы можете попробовать скалярную функцию. Используйте это в своем запросе на обновление, например:

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

но я полагаю, что стоит попробовать.

...