2010-02-01 59 views

Respuesta

36

Eso que se llama un bind variable en Oracle.

¿Cuál es el nombre para ":"?

Colon.

4

Es un named parameter.

En C#, se prefijo con el parámetro @ (ver here).

+3

Eso no es una función de C#. Es ADO.NET, y puede ser cambiado. –

+0

+1 - tiene mucho más sentido para mí. –

6

Esta es una etiqueta para un parámetro de consulta con nombre, y no es parte de la sintaxis real de la consulta. La etiqueta se reemplaza con algún valor especificado en el código que realiza la consulta antes de que realmente se ejecute.

0

que también es la sintaxis de parámetros para una consulta Delphi

44

¿Qué significa ":" reposar en una consulta?

A bind variable. Las variables de vinculación permiten que una sola declaración SQL (ya sea una consulta o DML) se reutilice muchas veces, lo que ayuda a la seguridad (al no permitir ataques de inyección SQL) y al rendimiento (al reducir la cantidad de análisis necesarios).

¿Cómo buscar el valor deseado?

Antes de que Oracle ejecute una consulta (o DML), su programa creará un cursor. Su programa emite el SQL que se analizará para ese cursor, luego debe vincular valores para cada variable de vinculación a la que hace referencia el SQL. Cómo se hace esto depende del idioma.

¿Cómo se llama ese signo?

A colon.

3

Colon : se utiliza en HQL Hibernate Query Language para indicar que hay un parámetro involucrado.

Así que lo que esto significa es: La sintaxis SQL :

SELECT * FROM EMPLOYEE WHERE EMP_ID = empID 

es igual que HQL SINTAXIS:

SELECT * FROM EMPLOYEE WHERE EMP_ID = :empID 

empID siendo variable local para los parámetros ...

Espero que esto ayude .

2

considere las siguientes afirmaciones

select name from T_emp where id=1; 
select name from T_emp where id=2; 
select name from T_emp where id=3; 

Cada vez que se ejecuta una instrucción, cheques de Oracle para las apariciones anteriores de la misma consulta. Si encuentra la misma consulta, se hace uso del mismo plan de ejecución . Si no, tiene que encontrar las diversas rutas de ejecución, crear el plan de ejecución óptimo y ejecutarlo.

diferencia de que no lo suficientemente inteligente como para darse cuenta de que sólo el identificador ha cambiado (según el ejemplo anterior) humana. Por lo tanto, atraviesa todas las luchas y lo ejecuta.

Pero hay una manera de decir que Oracle es una declaración similar y que se puede utilizar el mismo plan de ejecución - BIND VARIABLE. Por favor, encuentre el siguiente ejemplo:

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; 

El uso de variables de vinculación ayuda a mejorar el rendimiento diez veces. PL/SQL hace uso de las variables se unen por sí mismo (no es necesario que indique explícitamente que)

Cuestiones relacionadas