variable valor una sustitucion funcion ejecutar developer declarar consultas comandos asignar sql oracle variables declare

valor - ¿Cómo uso las variables en Oracle SQL Developer?



variables de sustitucion pl sql (8)

En SQL * Plus, puedes hacer algo muy similar

SQL> variable v_emp_id number; SQL> select 1234 into :v_emp_id from dual; 1234 ---------- 1234 SQL> select * 2 from emp 3 where empno = :v_emp_id; no rows selected

En SQL Developer, si ejecuta una instrucción que tiene cualquier cantidad de variables de vinculación (con el prefijo de dos puntos), se le pedirá que ingrese los valores. Como señala Alex, también puede hacer algo similar con la función "Ejecutar script" (F5) con la sintaxis alternativa de EXEC que Alex sugiere.

variable v_count number; variable v_emp_id number; exec :v_emp_id := 1234; exec select count(1) into :v_count from emp; select * from emp where empno = :v_emp_id exec print :v_count;

A continuación se muestra un ejemplo del uso de variables en SQL Server 2000.

DECLARE @EmpIDVar INT SET @EmpIDVar = 1234 SELECT * FROM Employees WHERE EmployeeID = @EmpIDVar

Quiero hacer exactamente lo mismo en Oracle usando SQL Developer sin complejidad adicional. Parece algo muy simple de hacer, pero no puedo encontrar una solución simple. ¿Cómo puedo hacerlo?


Estoy usando SQL-Developer en la Versión 3.2. Las otras cosas no funcionaron para mí, pero esto hizo:

define value1 = ''sysdate'' SELECT &&value1 from dual;

También es la manera más hábil presentada aquí, todavía.

(Si omite la parte "definir", se le pedirá ese valor)


Hay dos tipos de variables en SQL-plus: sustitución y enlace.

Esto es una sustitución (las variables de sustitución pueden reemplazar las opciones de comando SQL * Plus u otro texto codificado):

define a = 1; select &a from dual; undefine a;

Esto es bind (las variables de enlace almacenan valores de datos para sentencias SQL y PL / SQL ejecutadas en RDBMS, pueden contener valores únicos o completar conjuntos de resultados):

var x number; exec :x := 10; select :x from dual; exec select count(*) into :x from dual; exec print x;

SQL Developer admite variables de sustitución, pero cuando ejecuta una consulta con la sintaxis bind :var , se le solicita el enlace (en un cuadro de diálogo).

Referencia:

Las variables de sustitución de ACTUALIZACIÓN son un poco difíciles de usar, mira:

define phone = ''+38097666666''; select &phone from dual; -- plus is striped as it is number )) select ''&phone'' from dual; -- plus is preserved as it is string


Intente esto, funcionará, es mejor crear un procedimiento, si el procedimiento no es posible, puede usar este script.

with param AS( SELECT 1234 empid FROM dual) SELECT * FROM Employees, param WHERE EmployeeID = param.empid; END;


Ok, sé que esto es un truco, pero esta es una forma de usar una variable en una consulta simple, no en una secuencia de comandos:

WITH emplVar AS (SELECT 1234 AS id FROM dual) SELECT * FROM employees, emplVar WHERE EmployId=emplVar.id;

Tienes que ejecutarlo en todas partes.


Puede leer en otras partes las variables de sustitución; son bastante útiles en SQL Developer. Pero tengo ajustes tratando de usar variables de vinculación en SQL Developer. Esto es lo que hago:

SET SERVEROUTPUT ON declare v_testnum number; v_teststring varchar2(1000); begin v_testnum := 2; DBMS_OUTPUT.put_line(''v_testnum is now '' || v_testnum); SELECT 36,''hello world'' INTO v_testnum, v_teststring from dual; DBMS_OUTPUT.put_line(''v_testnum is now '' || v_testnum); DBMS_OUTPUT.put_line(''v_teststring is '' || v_teststring); end;

SET SERVEROUTPUT ON hace para que el texto pueda imprimirse en la consola de salida del script.

Creo que lo que estamos haciendo aquí se llama oficialmente PL / SQL. Hemos dejado la tierra pura de SQL y estamos usando un motor diferente en Oracle. ¿Ves el SELECT arriba? En PL / SQL siempre tiene que SELECT ... INTO una variable o un refcursor. No puede simplemente SELECT y devolver un conjunto de resultados en PL / SQL.


Respuesta simple NO.

Sin embargo, puede lograr algo similar ejecutando la siguiente versión utilizando variables de vinculación:

SELECT * FROM Employees WHERE EmployeeID = :EmpIDVar

Una vez que ejecute la consulta anterior en SQL Developer, se le pedirá que ingrese un valor para la variable de enlace EmployeeID.


Use la siguiente consulta:

DECLARE EmpIDVar INT; BEGIN EmpIDVar := 1234; SELECT * FROM Employees WHERE EmployeeID = EmpIDVar; END;