请教,sysdate作为绑定变量时的写法。

[复制链接]
查看11 | 回复9 | 2011-11-1 16:21:15 | 显示全部楼层 |阅读模式
/*
create table test_sysdate
(
idvarchar2(111),
mcvarchar2(111),
udate date
);
*/
BEGIN
--写法1
execute immediate 'insert into test_sysdate(id, mc, udate) values(:1, :2, sysdate)'
using sys_guid(),'test1';
--写法2
execute immediate 'insert into test_sysdate(id, mc, udate) values(:1, :2, :3)'
using sys_guid(),'test1',sysdate;
END;
/

请教,写法1,会不会造成大量的硬解析?是怎么分析出来的?
谢谢。

回复

使用道具 举报

千问 | 2011-11-1 16:21:15 | 显示全部楼层
觉得这2种没什么区别
回复

使用道具 举报

千问 | 2011-11-1 16:21:15 | 显示全部楼层
这个需求直接写即可, 不要用动态方法, 用静态即可:

insert into test_sysdate(id, mc, udate) values(sys_guid(), 'test1',sysdate);

回复

使用道具 举报

千问 | 2011-11-1 16:21:15 | 显示全部楼层
本帖最后由 yyj1827 于 2016-4-13 15:48 编辑
bell6248 发表于 2016-4-13 15:36
这个需求直接写即可, 不要用动态方法, 用静态即可:

谢谢回复。
我这是要执行几千万次。。。
回复

使用道具 举报

千问 | 2011-11-1 16:21:15 | 显示全部楼层
yyj1827 发表于 2016-4-13 15:47
谢谢回复。
我这是要执行几千万次。。。

对啊, 你先去理解一下动态和静态的区别, 我要你用的是静态绑定, 自己去看看tom的书和用tom的脚本测试一下
回复

使用道具 举报

千问 | 2011-11-1 16:21:15 | 显示全部楼层
yyj1827 发表于 2016-4-13 15:47
谢谢回复。
我这是要执行几千万次。。。

几千万次,压力在guid上吧
回复

使用道具 举报

千问 | 2011-11-1 16:21:15 | 显示全部楼层
〇〇 发表于 2016-4-13 16:00
几千万次,压力在guid上吧

谢谢。
回复

使用道具 举报

千问 | 2011-11-1 16:21:15 | 显示全部楼层
bell6248 发表于 2016-4-13 15:50
对啊, 你先去理解一下动态和静态的区别, 我要你用的是静态绑定, 自己去看看tom的书和用tom的脚本测试一 ...

谢谢。
回复

使用道具 举报

千问 | 2011-11-1 16:21:15 | 显示全部楼层
什么需要要把sysdate作为绑定变量? 不能先赋值给一个变量吗?
回复

使用道具 举报

千问 | 2011-11-1 16:21:15 | 显示全部楼层
1、当SQL文本不同时,就会发生硬解析。但你这两种写法,最终执行的SQL的文本都是一样的。所以,只会发生一次硬解析。
2、select * from v$sql where sql_text like 'insert into test_sysdate%';
用上面的SQL来执行查询,若查出很多行结果,且executions列上的数值基本上为1,那么就是发生了大量的硬解析。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行