Mantenimiento de una tabla en Oracle con Java y JSP – 07/15 – Crear un SP para devolver nombres similares de un campo.

Capa BD
01. Crear una BD en Oracle.
02. Crear una Tabla con clave primaria.
03. Crear un secuenciador.
04. Implementar sentencias para mantenimiento de la tabla.
05. Crear un package en la BD.
06. Crear un SP con un cursor como parametro de salida.
07. Crear un SP para devolver nombres similares de un campo.

Applicacion Web
08. Crear Un proyecto Web en Java.

Capa modelo
09. Crear Una clase Entidad (una clase simple).
10. Obtener una Conexión hacia la BD.
11. Crear un Statement simple.
12. Crear un PreparedStatement con parametros.
13. Crear un CallableStatement con un cursor como parametro de salida.

Capa Controlador
14. Crear un Servlet Controlador.

Capa Vista
15. Crear una pagina JSP con un formulario.

Anexos
01. Cadena de conexión.
02. Interface connection.
03. Clase OracleDataSource.
04. SQLException.
05. try – catch.
06. RequestDispatcher.

Crear un SP para devolver nombres similares de un campo

Preparación:


El procedimiento es parecido al usado para la creacion de SP con un cursor como parametro de salida del paso 6/16.
El usuario con el que creemos el procedimiento debe tener los privilegios CREATE PROCEDURE y EXECUTE sobre ese paquete.

Como se hace

En SQL Developer

Clic derecho en el paquete missps ->Edit
Se abrira una ventana en la que agregaremos este codigo :

procedure buscarxDescrip
(
descrip in Linea.Descripcion%TYPE,
vUserCursor out vCursor
) ;

Luego dar clic “Guardar”. No en el boton “Run”, porque estas declaraciones no se ejecutan.

 

Luego desplegamos el paquete missps y damos clic derecho en missps Body ->Edit
Aparecera una pantalla en la que agregaremos este codigo :

procedure buscarxDescrip
(
descrip in Linea.Descripcion%TYPE,
vUserCursor out vCursor
) is
begin
         open vUserCursor  for select * from Linea where upper(Descripcion) like concat(upper(Descrip),'%');
end buscarxDescrip;

Luego dar clic “Guardar”. Tambien se puede usar el boton “Run”, para que se guarde y ejecute el paquete.

Resultado

Si se produce algun error o warning , se mostrara en la ventana Compiler-Log en la parte inferior.
Si se uso el boton “Run”, se mostrara el mensaje del proceso de ejecucion en la ventana inferior “Running – Log”.

Como funciona :


En el procedimiento se crea dos parametros :
– un parametro de entrada (in) descripde tipo Descripcion%TYPE.
– un parametro de salida (out) vUserCursorde tipo vCursor.

Descripcion%TYPE es una estructura que nos evita el tener que acordarnos el tipo de dato exacto que definimos para un campo, se puede haber escrito Descripcionin VARCHAR2.

En el cuerpo del paquete hemos implementado el procedimiento almacenado declarado en la especificacion.
Aqui el procedimiento accede al tipo vCursor declarado en la especificacion del paquete.

El Set de Resultado sera transportado por el vCursor con la sentencia :

         open vUserCursor  for select * from Linea where upper(Descripcion) like concat(upper(Descrip),'%');

que abre el cursor para hacer referencia al resultado de la sentencia Select.
En la sentencia Select, la funcion concat nos permite hacer la union de varias cadenas. En el SQL standard esto se hace con el operador || pero este solo une caracteres con lo que no obtendriamos el resultado deseado, porque la cadena que es usada como parametro de busqueda contiene mas de un caracter.

Si tenemos como valor para Descrip, “gas”, la sentencia select seria equivalente a :

select * from Linea where upper(Descripcion) like GAS%);

Hay mas


MySQL usa la funcion concat para unir varias cadenas, no hay un operador que permita hacer esto, el operador estandard de SQL || no da errores en la sintaxis pero si en los resultados, pues solo trabaja con caracteres y no con cadenas.
Oracle tambien acepta el uso de esta forma de usar el operador like.

Ver tambien


http://albertovilches.com/pl_sql_oracle_desde_java

Anuncios

Un comentario en “Mantenimiento de una tabla en Oracle con Java y JSP – 07/15 – Crear un SP para devolver nombres similares de un campo.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s