这是什么:立场在查询?

INSERT INTO MyTable (ID) VALUES (:myId)

它是如何取所需的值?

编辑:同时那是什么牌子叫什么名字?我想在谷歌搜索,但什么是对:名字?

有帮助吗?

解决方案

这就是所谓的一个绑定变量 Oracle中。

  

什么是用户名 “:”?

科隆。

其他提示

什么是 “:” 代表在查询

一个绑定变量。绑定变量允许单个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查询

的参数语法
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top