什么冒号签署“:”在SQL查询?

什么:在查询中代表什么?

 INSERT INTO MyTable (ID) VALUES (:myId) 

它如何获得所需的价值?

编辑:那是什么标志叫? 我想在谷歌search,但是什么名字:

这在Oracle中称为绑定variables 。

“:”是什么名字?

结肠。

“:”在查询中代表什么?

一个绑定variables 。 绑定variables允许单个SQL语句(无论是查询还是DML)多次重用,这有助于安全(通过禁止SQL注入攻击)和性能(通过减less所需的parsing量)。

它如何获得所需的价值?

在Oracle执行查询(或DML)之前,您的程序将创build一个游标。 你的程序发出要为那个游标parsing的SQL,然后它必须绑定SQL引用的每个绑定variables的值。 这是如何做的取决于语言。

这个牌子叫什么名字?

冒号

这是一个命名查询参数的标记,不是查询实际语法的一部分。 标记被replace为代码中指定的某个值,以便在实际运行之前进行查询。

这是一个命名参数 。

在C#中,用@前缀参数(请参见此处 )。

Colon :在HQL Hibernate查询语言中用来表示有一个涉及的参数。

所以这意味着什么:SQL语法:

 SELECT * FROM EMPLOYEE WHERE EMP_ID = empID 

与HQL语法相同:

 SELECT * FROM EMPLOYEE WHERE EMP_ID = :empID 

empID是参数的局部variables…

希望这可以帮助。

考虑下面的陈述

 select name from T_emp where id=1; select name from T_emp where id=2; select name from T_emp where id=3; 

每次执行语句时,Oracle都会检查以前发生的相同查询。 如果发现相同的查询,它使用相同的执行计划 。 如果没有,就要find各种执行path,拿出最优执行计划并执行。

与人类不同的是,它不够智能地认识到只有id已经改变(按照上面的例子)。 因此,它经历了所有的斗争并执行它。

但有一种方法可以告诉Oracle它有一个类似的声明,并且可以使用相同的执行计划 – BIND VARIABLE 。 请看下面的例子:

 declare v_id number; v_name varchar2(30); type c is ref cursor; c1 c; begin for i in 1..100 loop open c1 for 'select * from T_emp where id = :x' using i; fetch c1 into v_name; dbms_output.put_line('name is ' || v_name); end loop; END; 

使用绑定variables有助于将性能提高十倍。 PL / SQL自己使用绑定variables(你不需要明确地告诉它)

这也是Delphi查询的参数语法