【问题标题】:Need to convert Text field to Varchar temporarily so that I can pass to a stored procedure需要暂时将文本字段转换为 Varchar,以便我可以传递给存储过程
【发布时间】:2011-05-20 14:19:33
【问题描述】:

我正在使用 SQL 2000 数据库。

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

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

任何解决这个问题的技巧都非常感谢!谢谢!

【问题讨论】:

    标签: sql sql-server tsql sql-server-2000


    【解决方案1】:

    声明varchar(8000)类型的变量

    declare @v varchar(8000)
    SET @v = (SELECT CAST(textcol as varchar(8000)) FROM yourtable WHERE ....)
    

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

    【讨论】:

    • 您好,我更新了我的问题以表明我正在使用 SQL 2000。
    • 你必须使用varchar(8000)nvarchar(4000)。显然它可能会被截断,但不是 1 个字符。
    • 这些文本字段中的大多数包含超过 8000 个 - 不过这绝对是极好的帮助。
    • 嗯,不知道有没有办法解决这个问题。
    • 如果您真的想要一个解决方案 - 支持超过 8000 个字符并能够传递到存储过程 - 您必须升级到支持 VARCHAR(MAX) 的 SQL Server 2005 或更新版本,它可以容纳最多 2 GB 的文本数据。 SQL Server 2000 没有为此提供任何可用的解决方案,抱歉....
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 2020-03-10
    • 2016-07-14
    相关资源
    最近更新 更多