你知道Oracle中exec和call的区别吗
1、先执行个测试Sql,检查一下环境。
环境OK。SQL:select sysdate from dual2、call:使用call 调用一个系统函数dbms_output.put_line。可以看到可以正常执行,并且得到预期的执行结果。SQL:set serveroutput on;--用来看到函数的输出call dbms_output.put_line('use key call');3、exec:使用exec调用一个系统函数dbms_output.put_line。可以看到执行时报错了ORA-00900。SQL:execdbms_output.put_line('use key exec');4、小结:call可以和sql一样执行;exec不是sql的关键字,不能像sql一样执行。小贴士:exec就是execute的缩写了5、说好的call和exec很像,很暧昧了。在哪了客官稍等,马上就来:SQL*Plus上场!!!命令:sqlplus / as sysdba;6、重复在Oracle SQL Developer中操作。可以看到都成功了!因为在实际的数据库开发中,不可能在Oracle SQL Developer中执行。大多数是在PL/SQL脚本中,其它语言,譬如java的代码中执行。这样就分不出来这两个关键字的区别了。
7、再往里面看看,这两个关键词的区别。call 在Oracle实际执行时没有变化。因为本来就是Oracle的关键字exec在Oracle实际执行时,转换成begin exec后面跟的语句块 end;可以理解为Oracle为方便使用而引入的语法糖吧。SQL:select sql_text from v$sql where sql_text like '%目标语句中带的特殊字符%';
免责声明:本站发布的教育资讯(图片、视频和文字)以本站原创、转载和分享为主,文章观点不代表本网站立场。
如果本文侵犯了您的权益,请联系底部站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!
新励学网教育平台
海量全面 · 详细解读 · 快捷可靠
累积科普文章数:18,862,126篇