Usuário com melhor resposta
Criar Function para retorar varios valores

Pergunta
-
Prezados, necessito fazer uma verificação em 3 campos de uma tabela onde originará um novo numero. Pensei em fazer fica function, onde passaria por parametro o valor e a função me retornaria os valores do codigo, porem estou encontrando problemas. Segue abaixo script para melhor entendimento.
drop table #BoletoDocumento Create table #BoletoDocumento( IdBoletoDocumento int identity, IdentificacaoBancoBoleto char(5), Carteira char(2), BoletoNumero char(5), BoletoOrdem char(4) ) go Insert into #BoletoDocumento Values('104-0','24','11415','0102'), ('104-0','24','11423','0303'),('104-0','24','10155','0111'),('104-0','24','12414','0101') go --Criar Função para gerar Nosso Numero Create function funGeraNossoNumero(@Banco char(5)) returns char(17) as Begin Declare @NossoNumero char(17); If @Banco = '104-0' set @NossoNumero = (Select LTRIM(RTRIM(Carteira)) + REPLICATE('0', 15 - LEN(CAST(BoletoNumero AS varchar(10)) + '-' + CAST(BoletoOrdem AS varchar(10)))) + CAST(BoletoNumero AS varchar(10)) + '-' + CAST(BoletoOrdem AS varchar(10)) NossoNumero from #BoletoDocumento ) return @NossoNumero end go --Chamada da Função Select IdBoletoDocumento , funGeraNossoNumero(IdentificacaoBancoBoleto ) from #BoletoDocumento go
Contando com a ajuda de todos
Marcelo Nogueira
segunda-feira, 9 de abril de 2012 17:50
Respostas
-
Boa tarde Marcelinho,
Veja se fazendo conforme o script abaixo da certo.
Mudei um pouco seu exemplo.
-- Criando tabela ( não foi tabela temporaria ) Create table BoletoDocumento( IdBoletoDocumento int identity, IdentificacaoBancoBoleto char(5), Carteira char(2), BoletoNumero char(5), BoletoOrdem char(4) ) go -- Executando os inserts Insert into BoletoDocumento Values('104-0','24','11415','0102'), ('104-0','24','11423','0303'),('104-0','24','10155','0111'),('104-0','24','12414','0101') go --Criar Função para gerar Nosso Numero Create function funGeraNossoNumero(@Banco char(5), @idBoleto int) returns char(17) as Begin Declare @NossoNumero char(17); If @Banco = '104-0' set @NossoNumero = (Select LTRIM(RTRIM(Carteira)) + REPLICATE('0', 15 - LEN(CAST(BoletoNumero AS varchar(10)) + '-' + CAST(BoletoOrdem AS varchar(10)))) + CAST(BoletoNumero AS varchar(10)) + '-' + CAST(BoletoOrdem AS varchar(10)) NossoNumero from BoletoDocumento where IdBoletoDocumento = @idBoleto ) return @NossoNumero end go --Chamada da Função Select IdBoletoDocumento ,dbo.funGeraNossoNumero(IdentificacaoBancoBoleto,IdBoletoDocumento ) from BoletoDocumento go
Att,
Adriano
- Editado Adriano Ap Nascimento segunda-feira, 9 de abril de 2012 19:13
- Sugerido como Resposta Junior Galvão - MVPMVP terça-feira, 10 de abril de 2012 17:26
- Marcado como Resposta Marcelinho FaberCode terça-feira, 10 de abril de 2012 17:39
segunda-feira, 9 de abril de 2012 19:11
Todas as Respostas
-
Boa tarde Marcelinho,
Veja se fazendo conforme o script abaixo da certo.
Mudei um pouco seu exemplo.
-- Criando tabela ( não foi tabela temporaria ) Create table BoletoDocumento( IdBoletoDocumento int identity, IdentificacaoBancoBoleto char(5), Carteira char(2), BoletoNumero char(5), BoletoOrdem char(4) ) go -- Executando os inserts Insert into BoletoDocumento Values('104-0','24','11415','0102'), ('104-0','24','11423','0303'),('104-0','24','10155','0111'),('104-0','24','12414','0101') go --Criar Função para gerar Nosso Numero Create function funGeraNossoNumero(@Banco char(5), @idBoleto int) returns char(17) as Begin Declare @NossoNumero char(17); If @Banco = '104-0' set @NossoNumero = (Select LTRIM(RTRIM(Carteira)) + REPLICATE('0', 15 - LEN(CAST(BoletoNumero AS varchar(10)) + '-' + CAST(BoletoOrdem AS varchar(10)))) + CAST(BoletoNumero AS varchar(10)) + '-' + CAST(BoletoOrdem AS varchar(10)) NossoNumero from BoletoDocumento where IdBoletoDocumento = @idBoleto ) return @NossoNumero end go --Chamada da Função Select IdBoletoDocumento ,dbo.funGeraNossoNumero(IdentificacaoBancoBoleto,IdBoletoDocumento ) from BoletoDocumento go
Att,
Adriano
- Editado Adriano Ap Nascimento segunda-feira, 9 de abril de 2012 19:13
- Sugerido como Resposta Junior Galvão - MVPMVP terça-feira, 10 de abril de 2012 17:26
- Marcado como Resposta Marcelinho FaberCode terça-feira, 10 de abril de 2012 17:39
segunda-feira, 9 de abril de 2012 19:11 -
Perfeito, sua resposta me proporcionou ainda mais clareza. Ao inves de tratar os campos pela function passei a enviar os dados por parametros exemplo:
Select.... funGeraNossoNumero(Banco,Carteira,BoletoNumeto)....from ....
Com isso passo os parametros atraves do select e a função trata as variaveis.
Sua resposta me abriu os caminhos,
Grato pela atenção
Marcelo Nogueira
terça-feira, 10 de abril de 2012 17:42