select*from在自定义函数(视图)中的特殊问题
来源:互联网 发布:建筑结构优化设计好处 编辑:程序博客网 时间:2024/05/02 21:29
1、提出问题
在自定义表值函数中,如果有返回select * from的情况 这个时候如果修改表结构,如添加表的字段表值函数的返回值就会和实际值不相同。
修改前表结构
修改前表的数据
自定义表值函数
修改表结构前搜索结果
修改后表结构
修改表结构后的查询结果
2、分析问题
如上图,大家可以看到自定义函数查询结果的ttt列结果不对了
变成了createdate列的结果,而createdate列没有了。
个人推测是自定义函数编译的时候自动会把select * from 解析成具体的列,并且保存,但是查询语句还是直接保存。
所以当表结构表的时候按照列的数组取匹配了,这样就会出现上图的问题,第一列匹配第一列,第n列匹配第n列,
ttt列匹配成添加的列createdate。而原来的ttt 就变成不显示了。
从上面可以看出,视图中
3、解决问题:
1、我认为避免的最好办法是不用Select *
2、重新编译自定义函数
3、如果可以,重新生成自定义函数的列(已确认见后面订正内容)--
--订正内容 12:51
从上图中可以看到修改表结构后,自定义函数的列没有修改,验证了我的猜测。
解决办法3 - 重新编译
我自己写了一个重新编译的SQL
修改后执行的sql:
因为有修改所以CreateDate现在变成了NuLL
但是结果是正确的了。、
总结:
根据上面的实验,可以得出:
1、视图里面尽可能不要出现*号。*号不仅对性能有影响,也不便于结构的更新。
2、无论视图所涉及的表结构有无修改,每次执行脚本后,刷新一下,总是好的。
0 0
- select*from在自定义函数(视图)中的特殊问题
- 索引视图在特殊约束中的应用
- select into from 在plsql中的错误
- select和from中间尽量不要用自定义的函数
- 论坛系统遇到的问题2(select INSTANCE_NAME from v$instance;提示表或视图不存在)
- 视图中慎用select * from table
- UIGestureRecognizer在多层视图中的触发问题
- MySQL中的SELECT...INTO...FROM
- matlab中的特殊函数
- Mysql命令select from:查询表中的数据(记录)
- MySQL命令select from:查询表中的数据(记录)
- MVC中t4模板在视图中的运用,创建自定义视图的t4模板
- 关于select 函数在 Linux C Socket编程中的应用
- UNIX中的Select函数
- 如何在对话框类中调用视图类中的函数
- Python 自定义函数的特殊属性(收藏专用)
- select 在jqueryMobile中的disabled刷新样式问题
- sql第一章总结函数 select into from
- 运动点电荷的电磁场(二)
- 关于Win7 64位下:Navicat无法连接64位Oracle 11gR2:Cannot load OCI DLL解决方法
- Apache Shiro 关于Shiro 授权
- 使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件(转)
- 子div不能撑开父div
- select*from在自定义函数(视图)中的特殊问题
- 指针和引用的小例子
- OC中加载URL的方法
- 华为OJ基础篇-输入n个整数,输出其中最小的k个
- TR069智能分支管理
- 青椒关键还是要有自己的代表性工作
- 面试请假攻略,不用裸辞也能找到工作
- 生产环境使用httpcliet遇到的坑
- Android AutoLayout全新的适配方式 堪称适配终结者