[nQSError:39043] 由于初始化块 使用的是行范围初始化但没有目标变量, 无法延迟执行它
2015-12-10 21:29
316 查看
rpd中的会话变量初始化块有一个选项叫“允许延迟执行”,即可以将该初始化块的执行从默认的用户登录的时候就执行延迟到用户引用了其中变量的时候在执行。
这样有什么好处呢?
可以减少用户登录时不必要的初始化工作,加快用户登录过程,并减少服务器的资源使用。
但是,如果我们的初始化块“行范围初始化”(Row-wise initialization)的方式,此时在去勾选“允许延迟执行”选项时,就会提示"[nQSError:39043] 由于初始化块 使用的是行范围初始化但没有目标变量, 无法延迟执行它" 错误。且Oracle官方文档写着Previously it was not possible to defer row-wise init-blocks; restriction has been lifted in 11.1.1.6 release.
也就是说11.1.1.6版本之后,是支持“行范围初始化”延迟执行的,那为什么还是会有这个错误呢?
查看相关文档发现这么一句:
The Row-wise initialization option is selected in the Session Variable Initialization Block Variable Target dialog and the variables
have not been declared explicitly with default values
原来我们需要显示声明行范围初始化块中的变量,并给它赋默认值,这样才能对行范围初始化方式的初始化块启用延迟执行。
新建会话变量,初始化块选择对应的行范围初始化块,并赋默认值。此时就可以勾选行范围初始化块的“允许延迟执行”选项了。
这样有什么好处呢?
可以减少用户登录时不必要的初始化工作,加快用户登录过程,并减少服务器的资源使用。
但是,如果我们的初始化块“行范围初始化”(Row-wise initialization)的方式,此时在去勾选“允许延迟执行”选项时,就会提示"[nQSError:39043] 由于初始化块 使用的是行范围初始化但没有目标变量, 无法延迟执行它" 错误。且Oracle官方文档写着Previously it was not possible to defer row-wise init-blocks; restriction has been lifted in 11.1.1.6 release.
也就是说11.1.1.6版本之后,是支持“行范围初始化”延迟执行的,那为什么还是会有这个错误呢?
查看相关文档发现这么一句:
The Row-wise initialization option is selected in the Session Variable Initialization Block Variable Target dialog and the variables
have not been declared explicitly with default values
原来我们需要显示声明行范围初始化块中的变量,并给它赋默认值,这样才能对行范围初始化方式的初始化块启用延迟执行。
新建会话变量,初始化块选择对应的行范围初始化块,并赋默认值。此时就可以勾选行范围初始化块的“允许延迟执行”选项了。
相关文章推荐
- 斐波那契数列
- 关于”点九”
- android学习笔记——ImageSwitcher控件(图片切换器)
- js append 含有引号等特殊符号的报错
- PL/SQL实战积累
- CCF真题之字符串匹配
- std::string 不支持back
- BZOJ 1935: [Shoi2007]Tree 园丁的烦恼( 差分 + 离散化 + 树状数组 )
- JDBC连接Oracle数据库时出现的ORA-12505错误及解决办法
- 旋转数组的最小数字
- 限制Exchange2007附件容量
- 一起talk C栗子吧(第七十三回:C语言实例--DIY pwd命令)
- POJ3579 二分
- 单例模式
- poj 1860-Currency Exchange(Bellman_Ford算法)
- STM32学习笔记(4):SysTick
- android学习笔记——GridView控件(九宫格布局)
- (hdu 7.1.8)Quoit Design(最低点——在n一个点,发现两点之间的最小距离)
- js 产生随机数
- 图片打包的应用