在Java开发中一般使用这样的占位符,进行传参:  select * from emp where id = ?Oracle里还可以绑定变量:
    select * from emp where id = :empId请问  :的使用只能在Oracle数据里么? 它和?有什么区别么 ?

解决方案 »

  1.   

    都是用来表示参数,我记得以前在delphi里也是用:来表示参数的
      

  2.   

    弄清楚JAVA开发与ORACLE的区别,JAVA开发Oracle一般用JDBC,JAVA API的规则就是?为占位符,但是用JDBC的话会自动将?变为:的,可以查看v$sql等视图:是Oracle的binding variable的语法,在写SQL和PL/SQL的时候经常使用,但不代表不使用:就不用绑定变量或使用:就一定是绑定变量其他数据库看有没有绑定变量了,貌似mysql没有??JAVA API规范会针对不同的数据库,不同数据库的lib有自己的实现,JAVA SQL API只是个接口性的东西
      

  3.   

    mysql已经支持?占位符了。
    :<name>是oracle占位符常用的一种形式。 至处应该是oracle内部可以快速定位绑定的是第几个变量。
    由此可以得到bindByName一说,就是说,可以通过":var"直接bind一个变量,多个位置可以共享这一bind。
    而"?"就没这个优点了,只能依靠序号定位。jdbc之所以没有这个":<var>"占位符,是因为它是一个开放式接口,有的厂商根本就不支持这类占位符,只能求同存异,只好把它给割了。也许将来会有。