转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> SyBase >> 正文
关于对象重新编译的问题         ★★★★

关于对象重新编译的问题

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1993 更新时间:2009/4/22 23:09:36
te:037e855e55] 

起始昨天我就试过不行,为了确认,今日有测试了一次,还是不行的。
起始手册中说可以recompile,也许只是优化了某一部分,并不能解决我们这里提到的问题

 joey 回复于:2003-09-17 11:53:39 评为精华了,  
提点小小意见,这是我自己写的,不是zt的.
放到原创精华更合适的

 chenfeng825 回复于:2003-09-17 11:59:01 不要太贪心,呵呵。鼓励原创!

 qjhadm 回复于:2003-09-17 13:06:13 确实不错.对待这样一个小问题做如此深刻的分析,精神另我佩服

 solofeng 回复于:2003-09-17 19:34:32 呵呵joey   比我强,上次我也是由于sp_rename的问题导致我们数据库出现很大的问题,不过后来知道是没有讲存储过程recomplie,但是我没有做这么细致的分析?佩服

 zhangyh123 回复于:2003-09-17 20:44:48 [quote:37dfb84738="Blackrose"]我坚信

sp_recompile 是会 导致对象重新编译的[/quote:37dfb84738]     

我一般 只 sp_recompile table  
从来没有使用 sp_recompile procedure 
不过还有点怀疑,明天自己验证看看。

 Eisen 回复于:2003-09-18 09:13:11 sp_recomplie后面只能跟 table的名字,不能针对某个procedure进行recompile的。

 zhangyh123 回复于:2003-09-18 09:27:31 [size=18:ce847676a7]关于 在 存储过程中使用 select * from table  以及新增加字段后新列为什么不出现的问题,我这里给一个比较正确的认识:
在检查你的存储过程文本中,可以看到,任何 
select * from table 在数据库保存并编译的时候,都被数据库编译器替换为 
  select col1,cole .....coln  的形式,被替换成具体的列名,新增加列后
新列名不会自动出现在这里
因此,新增加的列为什么 没有出来,原因就很清楚了。并不是重编译与否的问题,
我同意 blackrose 的看法 ,数据库存储过程肯定重新编译。

重新编译的对象应该是第一次数据库保存与编译时展开的数据库脚本,而不是开发人员写的 select * 因此 重新编译后并没有新列是很正常的,它只对展开列名
的sp 进行编译。

我认为缺失列的原因并不是楼主所说的原因(没有重新编译,而是编译的对象是什么!),请广大网友务必不要搞 混淆!

也请斑竹仔细检查,否则。。。     


另外 这样的问题在 mssql 数据库不会出现,
在mssql 数据库中,编译器不会修改你select * from ...的语句中的 * 为具体的列名 因此 从这里可以看出, 从 mssql 移植程序到 sybase 的人要改变观念,屏气写 select * from 的陋习!     [/size:ce847676a7]











 joey 回复于:2003-09-18 13:36:13 同意zhangyh123 的解释
[quote:846b2a1bf2]任何 
select * from table 在数据库保存并编译的时候,都被数据库编译器替换为 
select col1,cole .....coln 的形式,被替换成具体的列名,新增加列后 
新列名不会自动出现在这里 
因此,新增加的列为什么 没有出来,原因就很清楚了。[/quote:846b2a1bf2]
我并非说这是重新编译导致的问题,而是说重新编译可以解决这些问题。
也就是说,只有重新编译,stored proc 才能刷新底层表发生的变化。

 chenfeng825 回复于:2003-09-18 14:13:35 mssql也存在procedure 失效的问题。但具体没有深入测试了

 pengxb 回复于:2003-09-18 14:23:24 据专家说:如果在创建proc时加上with compile选项,就不会出现这个奇怪的现象了

 joey 回复于:2003-09-18 15:02:18 你指的是create proc  ... with recompile吧,这个我也试过,不行。

 emate 回复于:2003-11-12 21:41:29 偶用sybase也不很短时间了,可是真的还没"对象重新编译"呀 :(

 

上一页  [1] [2] 


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台