查询中的
:
代表什么?
INSERT INTO MyTable (ID) VALUES (:myId)
它如何获取所需的值?
编辑:那个标志叫什么?我想用谷歌搜索,但是
:
的名字是什么?
冒号
:
在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 这是一个类似的语句,并且可以使用相同的执行计划 - 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;
使用绑定变量有助于将性能提高十倍。 PL/SQL 确实使用自己的绑定变量(您不需要显式告诉它)
这也是 Delphi 查询的参数语法
发现该视频的前几分钟非常有用:https://www.youtube.com/watch?v=K6VfcRALxW4
提取:它称为绑定变量,这是等待接收的用户输入的占位符