Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

guvaz

Stored Procedure com vários select

Recommended Posts

Pessoal, criei uma stored procedure (SP) que dá um select em uma tabela, armazena em uma tabela temporaria, depois dah mais um select e armazena na tabela temporária, etc...Eu quero retornar o valor da tabela temporária, e para isso, no final de minha SP eu dou um select em minha tabela temporária, porém, o que tenho de retorno é o resultado do meu primeiro select.Como faço para retornar o resultado do último select???[]'sGustavo Vaz

Compartilhar este post


Link para o post
Compartilhar em outros sites

Segue abaixo o código da minha SP

 

IF EXISTS(SELECT NAME FROM SYSOBJECTS WHERE NAME = 'classificacao_alfabetica' AND type =  'P')DROP PROCEDURE classificacao_alfabeticaGOCREATE PROCEDURE classificacao_alfabetica    @curso int,   @vestibular varchar(30),   @numQuestoes int,   @numVagas intAS   CREATE TABLE #classificacao (codigousuario bigint, nome varchar(30), sobrenome varchar(70), codigoinscricao bigint, notaFinal float, dataNasc datetime )      DECLARE @codigousuario INT   DECLARE @nome VARCHAR(70)   DECLARE @sobrenome VARCHAR(30)   DECLARE @codigoinscricao INT   DECLARE @qtdAcertos SMALLINT   DECLARE @notaRedacao REAL   DECLARE @dtNascimento datetime   DECLARE @enemNota SMALLINT   DECLARE @notaSemEnem REAL   DECLARE @notaComEnem REAL   DECLARE @notaFinal REAL   DECLARE @i INT   DECLARE cursorT CURSOR FOR   SELECT usuario.codigousuario, usuario.nome, usuario.sobrenome, inscricao.codigoinscricao, qtdAcertos, notaRedacao, inscricao.enemNota, usuario.dtNascimento   FROM usuario, inscricao   WHERE inscricao.codigousuario = usuario.codigousuario and cursoopcao1 = @curso and inscricao.compareceu = 's' and pagou = 's' 	 and inscricao.qtdAcertos > 0 and inscricao.notaredacao >= 3 and vestibularIdentificacao = @vestibular   ORDER BY dtNascimento   OPEN cursorT   FETCH NEXT FROM cursorT   WHILE @@FETCH_STATUS = 0   BEGIN      SET @notaFinal = 0      FETCH NEXT FROM cursorT INTO @codigousuario, @nome, @sobrenome, @codigoinscricao, @qtdAcertos, @notaRedacao, @enemNota, @dtNascimento      SET @notaSemEnem = ((@notaRedacao*0.6)+(((@qtdAcertos*10)/@numQuestoes)*0.4))      SET @notaComEnem = ((@notaSemEnem * 4) + (@enemNota/10) ) / 5      IF @notaSemEnem >= @notaComEnem         SET @notaFinal = @notaSemEnem      ELSE         SET @notaFinal = @notaComEnem      INSERT INTO #classificacao values (@codigousuario, @nome, @sobrenome, @codigoinscricao, @notaFinal, @dtNascimento)   END   CLOSE cursorT   DEALLOCATE cursorT      CREATE TABLE #classificacao_aux (codigousuario bigint, nome varchar(30), sobrenome varchar(70), codigoinscricao bigint, notaFinal float, dataNasc datetime )   SET @i = 0   DECLARE cursorA CURSOR FOR   SELECT codigousuario, nome, sobrenome, codigoinscricao, notafinal, dataNasc       FROM #classificacao       ORDER BY notaFinal DESC, dataNasc   OPEN cursorA   FETCH NEXT FROM cursorA   WHILE @@FETCH_STATUS = 0   BEGIN      FETCH NEXT FROM cursorA INTO @codigousuario, @nome, @sobrenome, @codigoinscricao, @notaFinal, @dtNascimento      IF @i < @numVagas         INSERT INTO #classificacao_aux values (@codigousuario, @nome, @sobrenome, @codigoinscricao, @notaFinal, @dtNascimento)      ELSE         BREAK      SET @i = @i + 1   END   CLOSE cursorA   DEALLOCATE cursorA      SELECT * FROM #classificacao_aux  ORDER BY Nome, SobrenomeGO

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.