Текстовые, текстовые и графические типы данных недопустимы для локальных переменных

Как исправить эту ошибку?

The text, ntext, and image data types are invalid for local variables.

Моя программа:

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GetJobInfo]
    (
    @jobId int,
    @subject varchar(50) OUTPUT,
    @Body ntext OUTPUT,
    @prepared_email_id int OUTPUT
    )
AS
BEGIN
    SET NOCOUNT ON
    SELECT TOP 1 @prepared_email_id = p.[PreparedEmailID],
        @subject = p.[Subject],
        @Body = p.[Body]
        FROM [PreparedEmails] p INNER JOIN
        [Jobs] j ON p.[PreparedEmailID] =
        j.[PreparedEmailID]
        WHERE j.[JobID] = @jobId
    RETURN
END

Я не знаю, что такое ошибка или как я ее исправляю. Пожалуйста, помогите мне...

Ответ 1

Это говорит вам, что вам не разрешено использовать NTEXT в качестве типа данных для локальных переменных.

Изменение @Body ntext OUTPUT до @Body NVARCHAR(MAX) OUTPUT приведет к его работе.

Ответ 2

Я знаю, что это старый, но заслуживающий упоминания. Если ваши таблицы требуют этих типов данных, отбросьте свои переменные, когда вы делаете выбор или обновляете/вставляете...

SELECT cast(@somevariable as ntext) from...

Update some table set somevalue=cast(@somevariable as ntext) where...