如何用存储过程连接text类型的字段
现有一表,表中有一text字段,我如果要写一个存储过程,将表中若干条记录的这个text字段连接起来,存入另一表中的text字段,该如何处理?
注意,表中的记录通常都是超过varchar(8000)的,所以决不能用varchar(8000)替代,这样就有数据损失。同时,SQL Server不允许定义text类型的变量,这样,就让这个看似简单的问题复杂了。
问题点数:100、回复次数:4Top
1 楼huailairen(流浪猫--很想养只猫,带着它到处流浪。)回复于 2006-03-15 18:20:54 得分 0
第一次写入,
后几次作为更新操作就可以解决了。
用变量记住文本的偏移量,
使用UPDATETEXT 连接。
Top
2 楼huailairen(流浪猫--很想养只猫,带着它到处流浪。)回复于 2006-03-15 18:29:43 得分 0
第一次写入,
后几次作为更新操作就可以解决了。
用变量记住文本的偏移量,
使用UPDATETEXT 连接。
Top
3 楼zjcxc(邹建)回复于 2006-03-15 20:06:04 得分 100
-- 示例, 把 pubs 数据库中, pub_info 全部合并在一齐, 写入一个自己创建的表中
USE pubs
GO
-- 创建保存合并结果的表
CREATE TABLE dbo.tb(col text)
GO
-- 合并处理
CREATE TABLE #(col text)
INSERT # SELECT ''
DECLARE @p1 varbinary(16), @p2 varbinary(16)
SELECT @p1 = textptr(col) FROM #
DECLARE tb CURSOR LOCAL
FOR
SELECT textptr(pr_info)
FROM pub_info
OPEN tb
FETCH tb INTO @p2
WHILE @@fetch_status=0
BEGIN
UPDATETEXT #.col @p1 NULL 0 pub_info.pr_info @p2
FETCH tb INTO @p2
END
CLOSE tb
DEALLOCATE tb
INSERT tb SELECT * FROM #
DROP TABLE #
GO
-- 显示结果
SELECT DATALENGTH(col),(SELECT SUM(DATALENGTH(pr_info)) FROM pub_info),
*
FROM tb
GO
DROP TABLE tb
Top
4 楼zjcxc(邹建)回复于 2006-03-15 20:08:05 得分 0
结果:
86664 86664 This is sample text data for....
从字节数来看, 源和目标是一样的, 所以结果是对的. 楼主可以自行验证.
如果是更新到现有的记录, 则到最后的:
INSERT tb SELECT * FROM #
修改为:
UPDATE A SET col=B.col
FROM tb A, # B
WHERE A.条件
Top
相关问题
- 请问一个SYBASE数据库存储过程中有TEXT类型字段作为参数的问题?
- ASP与存储过程相对应的字段类型分别是什么?
- 以下sql server中的字段类型在asp调用存储过程时对应的是什么类型呢?
- 我在SQL存储过程中要返回一个text类型的字段的值,可提示text不能用OUTPUT,如何写存程才可能取得text类型的值?
- 在VB中调用存储过程,什么枚举类型属于 text 类型?
- 在存储过程中,如何把text类型转为字符类型。
- SQL存储过程中的Text类型,在ADO中对应什么类型?
- 关于text字段,有难度,搜不到相关帖子:在存储过程里如何把 一个表的 text字段的内容 写到 另一个表中的text字段,通过存储过程!
- 大家来看看,如何在存储过程进行两个表TEXT字段的数据拷贝?
- 还是关于存储过程与text类型之间关系的问题




