variable salida procedimientos procedimiento parametros funciones español ejemplos ejecutar developer con almacenado 11g oracle variables plsql toad

salida - Asignación de SQL variable de Oracle simple



procedimientos y funciones oracle pl/sql (5)

Para lograr lo que estás intentando en Toad, no necesitas declarar la variable en absoluto. Simplemente incluya su variable precedida de dos puntos y Toad le pedirá el valor de la variable cuando ejecute la consulta. Por ejemplo:

select * from all_tables where owner = :this_is_a_variable;

Si esto no funciona inicialmente, haga clic derecho en cualquier lugar del editor y asegúrese de que esté marcado "Preguntar por variables de sustitución".

Si realmente desea hacerlo de forma similar a la forma en que SQL Server maneja las variables (o si desea poder hacer lo mismo en SQL * Plus), puede escribirlo de la siguiente manera:

var this_is_a_variable varchar2(30); exec :this_is_a_variable := ''YOUR_SCHEMA_NAME''; print this_is_a_variable; select * from all_tables where owner = :this_is_a_variable;

Sin embargo, para hacer que esto funcione en Toad, tendrá que ejecutarlo a través de "Ejecutar como script", en lugar del típico comando "Ejecutar declaración".

A pesar de haber pasado una hora investigando, parece que no puedo entender cómo definir correctamente una variable y luego usarla en tu SQL.

Esto es lo que he producido hasta ahora:

DECLARE startDate DATE := to_date(''03/11/2011'', ''dd/mm/yyyy'');

de lo cual obtengo la respuesta:

ORA-06550: línea 1, columna 63: PLS-00103: Encontró el símbolo "fin de archivo" cuando esperaba uno de los siguientes:

comience el paquete de funciones pragma procedimiento subtipo tipo uso formulario actual cursor

Detalles: DECLARE startDate DATE: = to_date (''03 / 11/2011 '','' dd / mm / aaaa ''); Error en la línea 1 ORA-06550: línea 1, columna 63: PLS-00103: Encontró el símbolo "fin de archivo" cuando esperaba uno de los siguientes:

comience el paquete de funciones pragma procedimiento subtipo tipo uso formulario actual cursor

¡Me encantaría saber cómo hacer una tarea tan simple!


Tenga en cuenta que el PL / SQL de Oracle no es SQL.

PL / SQL es un lenguaje de procedimientos. SQL no es de procedimiento, pero puede definir "variables" que el usuario puede ingresar mediante la sintaxis "& var" (consulte http://www.orafaq.com/node/515 ).


¿Puedes por favor probar esto?

DEF startDate = to_date(''03/11/2011'', ''dd/mm/yyyy''); Select &startDate from dual;


Tu declaración de variable es correcta.

La palabra clave DECLARE se usa para definir variables con un alcance en un bloque PL / SQL (cuyo cuerpo está delimitado por BEGIN y END; ). ¿Cómo quieres usar esta variable?

El siguiente PL / SQL funciona bien para mí:

DECLARE startDate DATE := to_date(''03/11/2011'', ''dd/mm/yyyy''); reccount INTEGER; BEGIN SELECT count(*) INTO reccount FROM my_table tab WHERE tab.somedate < startDate; dbms_output.put_line(reccount); END;

También puede usar la sentencia DEFINE para usar variables simples de sustitución de cadenas. Son adecuados para un cliente como SQL / PLUS o TOAD.

DEFINE start_date = "to_date(''03/11/2011'', ''dd/mm/yyyy'')" SELECT COUNT(*) from my_table tab where tab.some_date < &start_date;


Esta es una publicación anterior, pero en caso de que alguien se tropiece con esto (como acabo de hacer), puede manejar esto con un CTE:

with params as ( select date ''2011-11-03'' as startdate from dual ) select . . . from params cross join . . .

Casi la misma sintaxis funciona en SQL Server (menos la date -específicamente y from dual ).