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

sha*_*jar 16 t-sql sql-server-2005

我该如何解决这个错误?

The text, ntext, and image data types are invalid for local variables.
Run Code Online (Sandbox Code Playgroud)

我的处理是:

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
Run Code Online (Sandbox Code Playgroud)

我不知道错误是什么或我如何解决它.请帮我...

pau*_*aul 26

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

更改@Body ntext OUTPUT@Body NVARCHAR(MAX) OUTPUT会得到它的工作.

  • 和图像使用 varbinary(max) (3认同)
  • 为什么存在这种限制?“text”类型的字符串文字似乎是一个完全合理的东西,想要提取到局部变量 (2认同)

小智 6

我知道这很老但是值得一提。如果表需要这些数据类型,请在执行选择或更新/插入时强制转换变量。

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

Update some table set somevalue=cast(@somevariable as ntext) where...
Run Code Online (Sandbox Code Playgroud)