while em stored procedure
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
Curtidas 0
Respostas
Fabio Mans
25/03/2009
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?
{
if(!row["IDNUM "].Equals(string.Empty))
{
//Faz o que você precisa //Faz um método para varrer o segundo select }
} Não pode assim?
GOSTEI 0
Régis Mello
25/03/2009
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
GOSTEI 0
Fabio Mans
25/03/2009
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
@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
GOSTEI 0
Fabio Mans
25/03/2009
O Senhor conseguiu resolver a sua dúvida com o exemplo que postei?
Obrigado.
Fabio
GOSTEI 0
Régis Mello
25/03/2009
Sim consegui,
Valew
Regis
GOSTEI 0