- 论坛徽章:
- 0
|
关于对象重新编译的问题
关于 在 存储过程中使用 select * from table 以及新增加字段后新列为什么不出现的问题,我这里给一个比较正确的认识:
在检查你的存储过程文本中,可以看到,任何
select * from table 在数据库保存并编译的时候,都被数据库编译器替换为
select col1,cole .....coln 的形式,被替换成具体的列名,新增加列后
新列名不会自动出现在这里
因此,新增加的列为什么 没有出来,原因就很清楚了。并不是重编译与否的问题,
我同意 blackrose 的看法 ,数据库存储过程肯定重新编译。
重新编译的对象应该是第一次数据库保存与编译时展开的数据库脚本,而不是开发人员写的 select * 因此 重新编译后并没有新列是很正常的,它只对展开列名
的sp 进行编译。
我认为缺失列的原因并不是楼主所说的原因(没有重新编译,而是编译的对象是什么!),请广大网友务必不要搞 混淆!
也请斑竹仔细检查,否则。。。
另外 这样的问题在 mssql 数据库不会出现,
在mssql 数据库中,编译器不会修改你select * from ...的语句中的 * 为具体的列名 因此 从这里可以看出, 从 mssql 移植程序到 sybase 的人要改变观念,屏气写 select * from 的陋习! |
|