什么是结肠癌的标志“:”在一个SQL查询吗?
-
24-09-2019 - |
题
这是什么:
立场在查询?
INSERT INTO MyTable (ID) VALUES (:myId)
它是如何取所需的值?
编辑:同时那是什么牌子叫什么名字?我想在谷歌搜索,但什么是对:
名字?
解决方案
其他提示
什么是 “:” 代表在查询
一个绑定变量。绑定变量允许单个SQL语句(一个查询或DML是否)被重新使用多次,这有助于安全(通过不允许SQL注入攻击)和性能(通过减少需要解析的量)。
如何它取所需的值吗
的查询(或DML)之前由Oracle执行时,程序将创建一个光标。你的程序问题的SQL被解析为指针,那么它必须为每个绑定变量绑定值由SQL提及。如何做到这一点取决于语言。
<强>那是什么符号称为吗
一个结肠。
这是一个名为查询参数的标签,而不是查询的实际语法的一部分。标记被替换为,使得它实际上是运行之前查询代码中指定某个值。
科隆:
在HQL Hibernate查询语言用于表示有涉及的参数。
所以,这是什么意思是: SQL语法:
SELECT * FROM EMPLOYEE WHERE EMP_ID = empID
是相同HQL语法:
SELECT * FROM EMPLOYEE WHERE EMP_ID = :empID
为参数empID
是局部变量...
希望这有助于。
考虑以下语句
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检查相同查询的先前出现。如果它发现相同的查询,它利用相同的执行计划强>的。如果不是这样,它必须找到不同的执行路径,拿出最优的执行计划和执行。
不同于人类是它不是智能地认识到只有ID已改变(按照上面的例子)。因此,它通过所有的斗争和执行它。
但有一种方式来告诉Oracle公司类似的声明,它可以使用相同的执行计划 - 绑定变量。请看以下示例:
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;
使用绑定变量有助于提高性能的十倍。 PL / SQL确实使用了它自己的绑定变量(您不必明确告诉它)
这也为一个Delphi查询
的参数语法不隶属于 StackOverflow