Listado completo de tutoriales

128 - Procedimientos almacenados (insertar)


Ver video

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.

Servidor de SQL Server instalado en forma local.

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;

Retornar