什么冒号签署“:”在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查询的参数语法