' where metid = :1 and valtype = :2 and datatime between :3 and :4';
BEGIN
EXECUTE IMMEDIATE VC_SUM_SQL
INTO VN_TMP
USING I_METID, I_VALTYPE, VD_STIME, VD_ETIME;
EXCEPTION
WHEN NO_DATA_FOUND THEN
VN_TMP := 0;
WHEN OTHERS THEN
VC_DETAIL := SQLERRM;
VN_TMP := 0;
VC_ERR_DESCRIPT := SF_GET_MET_NAMES(I_METID);
VC_ERR_DESCRIPT := '计算' || VC_ERR_DESCRIPT || '从' || VC_STIME || '到' ||
VC_ETIME || '的间隔电量时出错!';
SP_SET_SYSLOGS('PKG_STAT_AUTO.SP_CACU_INTERVAL_ENG_OF_PERIOD',
GI_ALARM_TYPE, 5, VC_ERR_DESCRIPT, VC_DETAIL);
END;
求大手解释 Oracle EXECUTE IMMEDIATE uing 什么意思
答案:2 悬赏:80 手机版
解决时间 2021-04-12 03:44
- 提问者网友:niaiwoma
- 2021-04-11 12:26
最佳答案
- 五星知识达人网友:由着我着迷
- 2021-04-11 13:40
这是oracle里绑定变量的写法。
前面你没复制全,应该是
VC_SUM_SQL := select 字段 from table ||
' where metid = :1 and valtype = :2 and datatime between :3 and :4';解释如下:
EXECUTE IMMEDIATE VC_SUM_SQL --执行VC_SUM_SQL
INTO VN_TMP --把查询的结果放入VN_TMP
USING I_METID, I_VALTYPE, VD_STIME, VD_ETIME; --这四个值对应上面的 :1、:2、:3、:4。这么写的好处时可以让oracle在解析的时候使用软解析,减少解析sql语句的次数,提高执行效率。
前面你没复制全,应该是
VC_SUM_SQL := select 字段 from table ||
' where metid = :1 and valtype = :2 and datatime between :3 and :4';解释如下:
EXECUTE IMMEDIATE VC_SUM_SQL --执行VC_SUM_SQL
INTO VN_TMP --把查询的结果放入VN_TMP
USING I_METID, I_VALTYPE, VD_STIME, VD_ETIME; --这四个值对应上面的 :1、:2、:3、:4。这么写的好处时可以让oracle在解析的时候使用软解析,减少解析sql语句的次数,提高执行效率。
全部回答
- 1楼网友:平生事
- 2021-04-11 14:29
虽然我很聪明,但这么说真的难到我了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯