Fórum while em stored procedure #3995

25/03/2009

0

ATENÇÃO SENHORES CONSULTORES RESPONDAM A PERGUNTA, NÃO ENVIEM SUGESTÕES QUE EU TESTO AQUI E NÃO FUNCIONAM. AGRADEÇO IMENSAMENTE.   O que eu preciso é: set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go ALTER PROCEDURE [dbo].[SP_SELECT_RELATIONSHIP_USER_I] ( @Identifier nvarchar(50), @UserNum bigint ) AS BEGIN DECLARE @IdNumI bigint IF NOT EXISTS(SELECT 1 FROM cc_UserIdentifier WHERE IDENTIFIER = @Identifier) BEGIN SELECT 2 AS TIPO, 'REGISTRO NÃO ENCONTRADO NA TABELA DE PARCEIROS COMERCIAIS.' AS MENSAGEM END IF NOT EXISTS(SELECT 1 FROM cc_Relationship WHERE IDNUM = @UserNum) BEGIN SELECT 2 AS TIPO, 'LICENÇA NÃO ENCONTRADA.' AS MENSAGEM END ELSE BEGIN SELECT @IdNumI = IDNUM FROM cc_Relationship WHERE IDI = @UserNum    Aqui vai retornar 3 consultas, eu sei porque eu já testei, irá retornar 3 usuários, portanto, quero um while para enquanto listar usuários aqui.... END Quero continuar pesquisando aqui e retornar todos os usuários listados aqui, ou seja, os 3 de cima, como não tem um while, ele retorna apenas 1 resultado, eu quero os 3.   SELECT UserName, Language, Sex, Birth, NameFantasy, FunctionCompany, WebSite FROM cc_User WHERE (Identifier = @Identifier) AND (UserNum = @IdNumI) END    PS: Já tentei com inner join e nesse caso conforme a orientação que vocês me passaram, no entanto do jeito passado está retornando 162 resultados.   Então por favor me ensinei apenas a fazer o while para continuar pesquisando os registros encontrados na tabela relationship.   Regis  
Régis Mello

Régis Mello

Responder

Posts

25/03/2009

Fabio Mans

Regis tudo bem? Tenho uma dúvida, o que a sua pergunta tem a ver com aplicações ASP.NET? Este resultado não pode ser feito na aplicação? No C# por exemplo?     Você varre os primeiros.   SELECT @IdNumI = IDNUM FROM cc_Relationship WHERE IDI = @UserNum    END    foreach (DataRow row in _dt.Rows)
        {
            if(!row["IDNUM "].Equals(string.Empty))
            {
               //Faz o que você precisa                //Faz um método para varrer o segundo select                   }
           
        }   Não pode assim?    
Responder

Gostei + 0

25/03/2009

Régis Mello

Não, tem que ser feito na stored procedure porque esse resultado é retornado para o webservice e para fins de clareza do código tudo em pesquisa do Banco.   Regis
Responder

Gostei + 0

25/03/2009

Fabio Mans

Veja se a proc abaixo pode te ajudar.   CREATE PROCEDURE [dbo].[SP_SELECT_RELATIONSHIP_USER_I] ( @Identifier nvarchar(50),
@UserNum bigint ) AS BEGIN DECLARE @IdNumI bigint IF NOT EXISTS(SELECT 1 FROM cc_UserIdentifier WHERE IDENTIFIER = @Identifier) BEGIN SELECT 2 AS TIPO, 'REGISTRO NÃO ENCONTRADO NA TABELA DE PARCEIROS COMERCIAIS.' AS MENSAGEM END IF NOT EXISTS(SELECT 1 FROM cc_Relationship WHERE IDNUM = @UserNum) BEGIN SELECT 2 AS TIPO, 'LICENÇA NÃO ENCONTRADA.' AS MENSAGEM END ELSE BEGIN
SELECT IDNUM INTO #tmpTbl FROM cc_Relationship WHERE IDI = @UserNum    WHILE EXISTS (SELECT TOP 1 IDNUM FROM #tmpTbl)
 BEGIN
   
  --SELECT * FROM #tmpTbl
  SELECT TOP 1  @IdNumI = IDNUM FROM #tmpTbl   
  SELECT TOP 1 UserName, Language, Sex, Birth, NameFantasy, FunctionCompany, WebSite FROM cc_User
  WHERE (Identifier = @Identifier) AND (UserNum = @IdNumI)   DELETE FROM #tmpTbl WHERE IDNUM = @IdNumI
 END END END
  Moderador existe sala de SQL??   Fabio
Responder

Gostei + 0

26/03/2009

Fabio Mans

O Senhor conseguiu resolver a sua dúvida com o exemplo que postei?   Obrigado.   Fabio
Responder

Gostei + 0

26/03/2009

Régis Mello

Sim consegui,     Valew   Regis
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar