2012-01-04 23 views
21

Me gustaría declarar y mostrar una variable en Oracle.Cómo declarar y mostrar una variable en Oracle

En T-SQL que haría algo como esto

DECLARE @A VARCHAR(10) --Declares @A 
SELECT @A = '12' --Assigns @A 
SELECT @A --Displays @A 

¿Cómo puedo hacer esto en Oracle.

Respuesta

34

Si está hablando de PL/SQL, debe colocarlo en un bloque anónimo.

DECLARE 
    v_text VARCHAR2(10); -- declare 
BEGIN 
    v_text := 'Hello'; --assign 
    dbms_output.Put_line(v_text); --display 
END; 
+0

Siento revivir una publicación anterior. La parte de esto que no aborda la pregunta original, al menos para mí, es que 'dbms_output.put_line' efectivamente hace una instrucción' PRINT' en T-SQL. Lo que David publicó y lo que estaba buscando fue que la última declaración 'SELECT' devuelva un conjunto de resultados, que puede ser utilizado por la aplicación cliente. ¿Sabes cómo lograr esto? Gracias. – InbetweenWeekends

+0

La 'dbms_output.Put_line (v_text);' hace el equivalente a 'PRINT @v_text;' en T-SQL ... si recuerda conectar su ventana de salida de Dbms en el desarrollador SQL a la misma consulta de Oracle que su consulta! –

+1

Si prefiere tener sus declaraciones de salida Dbms en su panel de Salida de Script, este es un tutorial rápido y fácil. http://www.thatjeffsmith.com/archive/2012/05/enabling-dbms_output-by-default-in-sql-developer/ – MPaul

7

Si se utiliza sqlplus puede definir una variable de este modo:

define <varname>=<varvalue> 

Y se puede visualizar el valor de:

define <varname> 

Y luego utilizarlo en una consulta como, por ejemplo, :

select * 
from tab1 
where col1 = '&varname'; 
+0

'& varname' la sintaxis fue muy útil, gracias – Nacht

1

¿Has cambiado recientemente? picar de MySQL y ahora anhelan los equivalentes lógicos de sus comandos más simples en Oracle? Porque ese es el caso para mí y tuve la misma pregunta. Este código le dará una impresión rápida y sucia que creo que es lo que está buscando:

Variable n number 
begin 
    :n := 1; 
end; 
print n 

La sección central es un poco PL/SQL que se une la variable. El resultado de print n está en forma de columna, y me temo que no dará el valor de n. Cuando me encontré con él en sapo 11 regresó como esto

 n 
--------- 
     1 

Espero que ayude

2

Si está utilizando PL/SQL a continuación, siguiente código debería funcionar:

conjunto serveroutput en - para recuperar y mostrar un tampón

DECLARE

v_text VARCHAR2(10); -- declare 

COMENZAR

v_text := 'Hello'; --assign 
dbms_output.Put_line(v_text); --display 

END;

/- esto se debe utilizar para ejecutar la secuencia de comandos pl/sql

Cuestiones relacionadas