| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2126 人关注过本帖
标题:关于sql2005 中update 的 write() 方法的问题!
只看楼主 加入收藏
frankqnj
Rank: 4
等 级:贵宾
威 望:12
帖 子:320
专家分:278
注 册:2008-4-6
结帖率:100%
收藏
 问题点数:0 回复次数:5 
关于sql2005 中update 的 write() 方法的问题!
我看的书说 对于 varchar(max) nvar char(max) varbinarr(max) 等数据类型
更新时 要使用  colname.write()方法
我不理解这个要的含义.

是指 如 以前的image text ntext 一样 当数据超过 8000 字节时 要使用 这个方法 还是?
建议一直使用这个方法?

如果不是的话  分明 普通的 set colname=value 的方式 也可以更新啊?
收到的鲜花
  • 卜酷塔2008-10-16 13:21 送鲜花  10朵   附言:确实是一个值得研究的问题。
搜索更多相关主题的帖子: update write 
2008-10-15 23:56
卜酷塔
Rank: 7Rank: 7Rank: 7
来 自:魅力青岛
等 级:禁止访问
威 望:39
帖 子:2569
专家分:0
注 册:2004-6-12
收藏
得分:0 
这个不是指的asp中的colname.write()

觉得为时已晚的时候,恰恰是最早的时候。

2008-10-16 10:40
frankqnj
Rank: 4
等 级:贵宾
威 望:12
帖 子:320
专家分:278
注 册:2008-4-6
收藏
得分:0 
楼上 感谢您的回复..
可能是我没表达明白... 我说的就是sql 里的方法

update table set column.write('更新的内容',0,null) where condition_expression

就是不明白 为什么书上说  server2005 的新类型  varchar(max) nvarchar(max) varbinary(max) 在 update 时 要使用
这个 column.write 方法

我想知道 是不是 这几个新类型  和text ntext image 一样 当存储数据大于8000字节时  就不能使用 insert into 和 update set column= value
的方式 而是使用  writetext 和 updatetext 等特定的方法?
2008-10-16 11:29
卜酷塔
Rank: 7Rank: 7Rank: 7
来 自:魅力青岛
等 级:禁止访问
威 望:39
帖 子:2569
专家分:0
注 册:2004-6-12
收藏
得分:0 
这是官方解释:
WRITETEXT

说明
允许对现有文本或图像列进行交互更新但不进行记录日志。

语法
WRITETEXT table-name.column-name
text_pointer [ WITH LOG ] data

用法
更新现有文本或图像值。除非提供 WITH LOG 选项,否则事务日志中不记录更新。对视图不能执行 WRITETEXT 操作。

副作用
WRITETEXT 不触发触发器,缺省情况下,事务日志中不记录 WRITETEXT 操作。

示例
下面这段代码阐释了 WRITETEXT 语句的用法。该示例中的 SELECT 语句返回单行。该示例用值 newdata 替换指定行中的 column_name 列的内容。

EXEC SQL create variable textpointer binary(16);
EXEC SQL set textpointer =
   (  SELECT textptr(column_name)
      FROM table_name WHERE id = 5 );
EXEC SQL writetext table_name.column_name
   textpointer 'newdata';
同样对于updatetext来说大同小易,个人感觉好像不像楼主说的那样,他的功能应该和UPDATE不一样。
他好像主要是用在特殊情况下。至于存储数据大于8000字节时使用,官方没有给出解释,所以我也不好下定论,这个问题我再好好研究一下。

觉得为时已晚的时候,恰恰是最早的时候。

2008-10-16 13:20
bruce
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:1170
专家分:10
注 册:2005-3-31
收藏
得分:0 
MAX类型具有与TEXT和IMAGE类型稍微不同的行溢出行为

小時候家里很穷,买不起自行车,我只好每天打的士上学。初中的时候就因为我成绩太突出,学校领导留我多读两年.初中毕业后,高中的校长觉得我有前途.就多收了我3万元人民币,高2的時候,班主任认为我有很强的独立生存能力,于是让我退了学.最后我看破红尘.决定从此嚣张!
2008-10-16 17:20
frankqnj
Rank: 4
等 级:贵宾
威 望:12
帖 子:320
专家分:278
注 册:2008-4-6
收藏
得分:0 
恩! 感谢楼上2位的资料...
我也不知道这本书的作者说的这些 根据是什么.但是 他是信誓旦旦的说的!

还说 对于 text ntext image  以及其 使用的 writetext 和updatetext  方法 微软官方 有表示 会在今后的 sql server 中取消掉 !!  我还没用过 server2008 不知道 是否真如这个作者所说.或者可能在更新某个版本中.

不过他确实是强调  建议如果构造新的数据库  尽量使用 varchar(max) nvarchar(max) 和varbinary(max)来代替 text ntext image 等数据类型!

而这些新的 大数据类型  只需要考虑update 时 是否使用 column.write方法 其他情况 无什么差别.

我查了一些论坛对 column.write 方法的 描述. 觉得 这东西 并不是 必须用的! 也不存在 所谓的 8000 字节上使用的问题....(因为该书作者,仅仅是说要使用它 而没说它和writetext updatetext 方法使用环境类似.)

我觉得 column.write()方法 唯一的用处就是  当你不想完全覆盖掉 大数据中内容时 ,想局部修改 一部分数据时  要使用它!也只能使用它

我们看看它的 三个参数 能给我们带来哪些操作上的便利.
   .write('数据',0,null) 全部覆盖更新 (现在看来,这条完全可以 update set colum=value)
   .write('数据',n,1)插入式更新 在第n个字符后插入数据.
   .write('数据',n,m) 局部覆盖 插入式更新  在第n个字符后,从第n+1字符 至 第m个字符被覆盖更新
2008-10-16 18:58
快速回复:关于sql2005 中update 的 write() 方法的问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.071678 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved