Listado completo de tutoriales
128 - Procedimientos almacenados (insertar) |
Podemos ingresar datos en una tabla con el resultado devuelto por un procedimiento almacenado.
La instrucción siguiente crea el procedimiento "pa_ofertas", que ingresa libros en la tabla "ofertas":
create proc pa_ofertas as select titulo,autor,editorial,precio from libros where precio<50;
La siguiente instrucción ingresa en la tabla "ofertas" el resultado del procedimiento "pa_ofertas":
insert into ofertas exec pa_ofertas;
Las tablas deben existir y los tipos de datos deben coincidir.
Ingresemos el siguiente lote de comandos en el SQL Server Management Studio:
if object_id('libros') is not null
drop table libros;
create table libros(
codigo int identity,
titulo varchar(40),
autor varchar(30),
editorial varchar(20),
precio decimal(5,2),
primary key(codigo)
);
go
insert into libros values ('Uno','Richard Bach','Planeta',15);
insert into libros values ('Ilusiones','Richard Bach','Planeta',12);
insert into libros values ('El aleph','Borges','Emece',25);
insert into libros values ('Aprenda PHP','Mario Molina','Nuevo siglo',50);
insert into libros values ('Matematica estas ahi','Paenza','Nuevo siglo',18);
insert into libros values ('Puente al infinito','Richard Bach','Sudamericana',14);
insert into libros values ('Antología','J. L. Borges','Paidos',24);
insert into libros values ('Java en 10 minutos','Mario Molina','Siglo XXI',45);
insert into libros values ('Antología','Borges','Planeta',34);
-- Eliminamos la tabla "ofertas" si existe y la creamos con los mismos
-- campos de la tabla "libros":
if object_id('ofertas') is not null
drop table ofertas;
create table ofertas(
titulo varchar(40),
autor varchar(30),
editorial varchar(20),
precio decimal(5,2)
);
go
-- Eliminamos el procedimiento llamado "pa_ofertas", si existe:
if object_id('pa_ofertas') is not null
drop procedure pa_ofertas;
go
-- Creamos el procedimiento para que seleccione los libros
-- cuyo precio no supera los 30 pesos:
create proc pa_ofertas
as
select titulo,autor,editorial,precio
from libros
where precio<=30;
go
-- Vamos a ingresar en la tabla "ofertas" el resultado devuelto
-- por el procedimiento almacenado "pa_ofertas":
insert into ofertas exec pa_ofertas;
-- Veamos el contenido de "ofertas":
select * from ofertas;
-- Eliminamos la tabla "libros_por_editorial" si existe y
--luego creamos la tabla con dos campos: nombre de editorial y cantidad:
if object_id('libros_por_editorial') is not null
drop table libros_por_editorial;
create table libros_por_editorial(
editorial varchar(20),
cantidad int
);
go
-- Eliminamos el procedimiento llamado "pa_libros_por_editorial", si existe:
if object_id('pa_libros_por_editorial') is not null
drop procedure pa_libros_por_editorial;
go
-- Creamos el procedimiento para que cuente la cantidad de libros de cada editorial:
create proc pa_libros_por_editorial
as
select editorial,count(*)
from libros
group by editorial;
go
-- Vamos a ingresar en la tabla "libros_por_editorial" el resultado devuelto
-- por el procedimiento almacenado "pa_libros_por_editorial":
insert into libros_por_editorial exec pa_libros_por_editorial;
-- Veamos el contenido de la tabla "libros_por_editorial":
select * from libros_por_editorial;