[nQSError:39043] 由于初始化块 使用的是行范围初始化但没有目标变量, 无法延迟执行它

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

原来我们需要显示声明行范围初始化块中的变量,并给它赋默认值,这样才能对行范围初始化方式的初始化块启用延迟执行。


新建会话变量,初始化块选择对应的行范围初始化块,并赋默认值。此时就可以勾选行范围初始化块的“允许延迟执行”选项了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值