oracle中多行注释“/**/”引发的问题

最近在测试一个sql脚本,出现了一个语句执行的问题。

测试发现,脚本文件在PL/SQL命令窗口中执行时,执行结果正常,
该文件在windows控制台中执行时,界面和执行bat文件一样非正常显示。

因为,执行bat文件也是在windows控制台执行该文件,
所以,不能正常显示是因为在windows控制台中执行了文件,即与执行的环境有关。

经过一番周折也没有发现语句的问题。

后来无意中将“/*”改成 /** 问题便得到了解决。

真是奇妙!

oracle中多行注释“/**/”引发的问题

含有一个星号的/*会被windows控制台(sql plus)解释为“/”和注释(即会运行当前缓冲区中的命令,而 /*****含有两个或两个以上星号的符号只会被解释为注释(即不会运行当前缓冲区的命令)。

但在PL/SQL中不会出现以上问题,即无论使用几个星号注释符号都只被解释为注释。

????使用多行注释时,务必使用“/**”至少包含两个星号的形式,以防止出现二义性。

最后,关于oracle中保存命令至缓存区中的情况
在sql plus中执行sql语句、pl/sql程序时,输入的sql语句和pl/sql程序代码会暂时存放在sql缓存区中, 只存储最近一次执行的命令。

只在windows控制台中有效(sql*plus中),在PL/SQL Developer中无效。所以/*和/**在PL/SQL Developer中执行效果是一样的。