需要暂时将Text字段转换为Varchar,以便我可以传递给存储过程

use*_*885 11 sql t-sql sql-server sql-server-2000

我正在使用SQL 2000数据库.

我正在使用一个数据库,在该数据库中我无法更改表或存储过程的类型.我需要调用的一个存储过程需要一个'text'参数.我可以进入文本字段,但我无法确定将其存储在变量中或以其他任何方式将其传递到存储过程中?

如果我尝试创建一个文本变量,SQL将不会让我 - 如果我将它转换为varchar我只从文本字段中获取第一个字符.

任何可以解决这个问题的技巧都值得赞赏!谢谢!

Mar*_*ith 22

声明类型的变量 varchar(8000)

declare @v varchar(8000)
SET @v = (SELECT CAST(textcol as varchar(8000)) FROM yourtable WHERE ....)
Run Code Online (Sandbox Code Playgroud)

显然它可能仍然被截断但不是1个字符.

  • 你必须使用`varchar(8000)`或`nvarchar(4000)`.显然它可能被截断但不是1个字符. (3认同)
  • 如果你真的想要一个解决方案 - 支持超过 8000 个字符并且能够传递到存储过程 - 你必须升级到 SQL Server 2005 或更高版本,它支持`VARCHAR(MAX)`,它可以容纳多达 2 GB 的文本数据。SQL Server 2000 没有为此提供任何可用的解决方案,抱歉.... (2认同)