Jla*_*Jla 44 sql oracle plsql bind-variables
什么是:
代表在查询?
INSERT INTO MyTable (ID) VALUES (:myId)
Run Code Online (Sandbox Code Playgroud)
它如何获取所需的值?
编辑:那个标志叫什么?我想搜索谷歌,但名称是:
什么?
小智 6
:
在HQL Hibernate查询语言中使用冒号来表示涉及参数.
那意味着什么:SQL语法:
SELECT * FROM EMPLOYEE WHERE EMP_ID = empID
Run Code Online (Sandbox Code Playgroud)
与HQL语法相同:
SELECT * FROM EMPLOYEE WHERE EMP_ID = :empID
Run Code Online (Sandbox Code Playgroud)
empID
是参数的局部变量......
希望这可以帮助.
Nat*_*ty 6
考虑以下陈述
select name from T_emp where id=1;
select name from T_emp where id=2;
select name from T_emp where id=3;
Run Code Online (Sandbox Code Playgroud)
每次执行语句时,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;
Run Code Online (Sandbox Code Playgroud)
使用绑定变量有助于将性能提高十倍。PL/SQL 确实使用自己的绑定变量(您不需要显式告诉它)
归档时间: |
|
查看次数: |
70525 次 |
最近记录: |