text,ntext和image数据类型对局部变量无效

时间:2014-01-21 08:55:18

标签: tsql sql-server-2005

如何解决此错误?

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

我不知道错误是什么或我如何修复它。 请帮帮我......

2 个答案:

答案 0 :(得分:24)

它告诉您不允许使用NTEXT作为局部变量的数据类型。

@Body ntext OUTPUT更改为@Body NVARCHAR(MAX) OUTPUT将使其正常运行。

答案 1 :(得分:5)

我知道这很老但值得一提。如果您的表需要这些数据类型,请在执行select或update / insert ...

时强制转换变量
SELECT cast(@somevariable as ntext) from...

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