关于text字段,有难度,搜不到相关帖子:在存储过程里如何把 一个表的 text字段的内容 写到 另一个表中的text字段,通过存储过程!

comszsoft 2005-12-27 12:07:22
如题。请指教,谢谢。
...全文
211 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
zlp321002 2005-12-27
  • 打赏
  • 举报
回复
--这样不行吗?
insert into 表 select Texts字段 from 表1
comszsoft 2005-12-27
  • 打赏
  • 举报
回复
受教育了,多谢各位高人指点。
结帖
zjcxc 元老 2005-12-27
  • 打赏
  • 举报
回复
关于" 添加的时候不能用 insert into ,而 insert select 语句却可以"


添加的时候一样可以用 insert into, 只是注意, 由于2000及以下版本不支持text/ntext变量, 因此, 如果你用变量是无法insert 超过8000字节的数据的.

但如果你直接用常数是完全没有问题的, 楼主可以用下面的代码测试.

create table #(a text)
inert # values('aa...这里写上超过8000字节的字符数据')
select datalength(a) from #
zjcxc 元老 2005-12-27
  • 打赏
  • 举报
回复
updatetext 适用的是需要把两个表的数据合并, 或者在text中做一些插入,修改之类的操作.

完整的数据复制不需要用updatetext这么复杂. update足亦
zjcxc 元老 2005-12-27
  • 打赏
  • 举报
回复
1. insert, 如1楼那样处理即可, 没有什么技巧可言




2. 如果是把一个表的text更新到另一个表, 其实也没有技巧可言, 直接update即可. 下面是示例:

-- 在pubs数据库上做演示, 该数据库的 pub_info表包含text列 pr_info
use pubs

-- 演示创建一个临时表
select pub_id, pr_info=cast(null as text) into # from pub_info

select * from #


-- 现在把 pub_info 的 pr_info 列的数据update到临时表
update a set pr_info=b.pr_info
from # a, pub_info b
where a.pub_id=b.pub_id
select * from #

drop table #
$扫地僧$ 2005-12-27
  • 打赏
  • 举报
回复
参考:
以操作TEXT列的标准函数 UPDATETEXT 实现对TEXT列数据的追加:
-------------------------------------------------------------------------------

--创建临时表,并将表头信息插入表中
CREATE TABLE #tab_dest(c1 TEXT)
INSERT INTO #tab_dest SELECT 'uid name'

--声明过程变量
DECLARE @uid VARCHAR(20),@name VARCHAR(40),@s VARCHAR(100),@len INT

--以游标方式获取sysusers中数据,并以UPDATETEXT方式更新到临时表#tab_dest
DECLARE t_cursor CURSOR FOR
SELECT uid,name FROM sysusers

OPEN t_cursor

FETCH NEXT FROM t_cursor INTO @uid,@name

WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @len = DATALENGTH([c1]) FROM #tab_dest

SET @s = CHAR(13)+@uid+' '+@name

DECLARE @ptrval binary(16)

SELECT
@ptrval = TEXTPTR(c1)
FROM
#tab_dest

UPDATETEXT #tab_dest.[c1] @ptrval @len 0 @s

FETCH NEXT FROM t_cursor INTO @uid,@name
END

CLOSE t_cursor
DEALLOCATE t_cursor

--查看更新结果
SELECT C1 FROM #tab_dest
$扫地僧$ 2005-12-27
  • 打赏
  • 举报
回复
UPDATETEXT
comszsoft 2005-12-27
  • 打赏
  • 举报
回复
如果要用 update 那用该怎么办呢?好像和insert into 不一样吧。请指教。谢谢
AriesOracle 2005-12-27
  • 打赏
  • 举报
回复
一楼的回答用Insert into语句的确没有问题,不知楼主是想用Insert还是Update?
comszsoft 2005-12-27
  • 打赏
  • 举报
回复
谢谢各位老大热心,经测试,一楼的方法是可以的,但是我更迷惑了,为什么
添加的时候不能用 insert into ,而 insert select 语句却可以呢,这两个的添加数据的方法有什么不同,请高人指点,不然知识还是停留在表面,不能完全消化。
AriesOracle 2005-12-27
  • 打赏
  • 举报
回复
Sorry,以上回答有误
AriesOracle 2005-12-27
  • 打赏
  • 举报
回复
对效率要求很高吗?如果不高的话用游标循环如何?
1、查出源表Text的字段内容,赋值到一个Binary(16)的变量
2、用UpdateText或WriteText写入目标表
pbsql 2005-12-27
  • 打赏
  • 举报
回复
如一楼那样复制是没有问题的,不受长度限制
comszsoft 2005-12-27
  • 打赏
  • 举报
回复
先谢谢楼上的。不过据我所知,text字段大于8000时,用insert语句不能实现,要用writetext或updatetext,那这个insert into 应该也是不可以的吧。请指教。

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧