How to create a precedent that accesses a substring and calculates using the substring as parameter?

Asked

Viewed 41 times

0

I need to create a precedent that according to the substring of a title, calculate the average price of books with the substring passed as parameter, and the average price needs to be an output parameter

I have the following tables

CREATE TABLE TB_Autor(
   Cod_autor int primary key,
   Nome_autor varchar(40),
   Sexo char(1)
)

CREATE TABLE TB_Livro(
    Cod_livro  int primary key,
    Cod_autor int constraint FK_TB_Livro_Autor foreign key references TB_Autor(Cod_autor),
    Titulo_livro varchar(40),
    Genero_livro varchar(20),
    Valor_livro money
)

CREATE TABLE TB_Cliente(
    Cod_cliente int primary key,
    Nome_cliente varchar(50),
    Data_nascimento date,
    Sexo char(1)
)


CREATE TABLE TB_Cidade(
    Cod_municipio int primary key,
    Nome_municipio varchar(30),
    UF char(2),
    Região char(20)
)

CREATE TABLE TB_Venda(
    Cod_venda int primary key,
    Cod_livro int constraint FK_TB_Venda_Livro foreign key references TB_Livro(Cod_livro),
    Cod_cliente int constraint FK_TB_Venda_Cliente foreign key references TB_Cliente(Cod_cliente),
    Cod_municipio int constraint FK_TB_Venda_Cidade foreign key references TB_Cidade(Cod_municipio),
    Qtd_venda int,
    Valor_venda money,
    Data_venda date
)

The process below is what I have, I don’t know how to make it work

create procedure sp_exL @livro varchar(50)
as
begin
select AVG(valor_livro) as 'Media'  from TB_Livro
where titulo_livro like %@livro%
end 

exec sp_exL 'Livro'
  • I could not understand very well. Give an example of data in the tables, an example entry and desired output for this entry

  • Add a second parameter to the procedure declaration, but with the OUTPUT tag. Done, you already have your output parameter.

1 answer

0

Try:

-- código #1
CREATE PROCEDURE exL 
     @livro varchar(50),
     @pMedia money output
as
begin
set nocount on;
set @pMedia= (SELECT avg (valor_livro) from TB_Livro
              where titulo_livro like '%' + @livro + '%');
end;
go

I have not tested; may contain error(s).


To use:

-- código #2
declare @pesq varchar(20), @valor_médio money;

set @pesq= 'raia';
EXECUTE exL @livro= @pesq, @pMedia= @valor_médio output;

SELECT @valor_médio;

Browser other questions tagged

You are not signed in. Login or sign up in order to post.