Como fazer um Array em SQL Server

06/11/2013

0

Tenho o seguinte problema, em uma consulta SQL eu retorno um ou mais valores.
Exemplo:

SELECT CANAIS * FROM TABELA
RETORNANDO (PORTAL,REDES SOCIAIS, JORNAL, IMPRESSOS)

Com estes valores preciso colocar em um array e comparalos +/- da seguinte forma

SE (VALORE(S) DO ARRAY ==''PORTAL")
BEGIN
PRINT 'VOCÊ MARCOU PORTAL'
END


SE (VALORE(S) DO ARRAY ==''PORTAL" AND VALORE(S) DO ARRAY ==''JORNAL" )
BEGIN
PRINT 'VOCÊ MARCOU PORTAL E JORNAL'
END

E assim por diante...
Samuel Lopes

Samuel Lopes

Responder

Posts

06/11/2013

Gustavo Bretas

Você traz o resultado em colunas? Não pode ser linhas? Em linhas da pra vc fazer um cursor!

Melhora seu exemplo ae!
Responder

06/11/2013

Samuel Lopes

Ele retorna em linhas mesmo..
Só coloquei assim como exempo...
seria assim:

SELECT CANAIS * FROM TABELA

RETORNARÁ:

---------------------------------
| PORTAL |
---------------------------------
| REDES |
---------------------------------
| SOCIAIS |
---------------------------------
| JORNAL |
---------------------------------
| IMPRESSOS |
----------------------------------
Responder

06/11/2013

Gustavo Bretas

E onde vc verifica qual dos canais foi selecionado?

Pq pelo que entendi do seu "modelo", tem duas possibilidades. Se vc tem uma tabela com todos os canais, vc pode ter um tabela onde seu usuário selecione mais de um canal, ou um campo usando chave estrangeira, onde ele marque somente uma opção. Então?
Responder

06/11/2013

Samuel Lopes

Tenho vários checkboxs

Onde será gravado o que o usuário selecionar em uma tabela
Sem chave estrangeira
Responder

06/11/2013

Gustavo Bretas

Certo, adapta pra sua tabela, e veja se atende a sua necessidade!

DECLARE @CANAIS VARCHAR(30)
DECLARE @SEPARADOR VARCHAR(1)
DECLARE @RESULTADO VARCHAR(200)
--
SET @SEPARADOR = ' '
SET @RESULTADO  = NULL
-- Cursor para percorrer os canais
DECLARE cursor_Canais CURSOR FOR
    SELECT 
		CANAIS 
	FROM TABELA

-- Abrindo Cursor para leitura
OPEN cursor_Canais
-- Lendo a próxima linha
FETCH NEXT FROM cursor_Canais INTO @CANAIS
-- Percorrendo linhas do cursor (enquanto houverem)
WHILE @@FETCH_STATUS = 0
BEGIN
	@RESULTADO = ISNULL(@RESULTADO, 'VOCÊ MARCOU') + @SEPARADOR + @CANAIS
	@SEPARADOR := ', '
	-- Lendo a próxima linha
    FETCH NEXT FROM cursor_Canais INTO @CANAIS
END
-- Fechando Cursor para leitura
CLOSE cursor_Canais
-- Desalocando o cursor
DEALLOCATE cursor_Canais 
IF @RESULTADO IS NULL
	SET @RESULTADO = 'NENHUM CANAL SELECIONADO'
-- Mostrando o Resultado
PRINT @RESULTADO
-- Ou
SELECT @RESULTADO


Eu estou sem SQL Server aqui pra testar, mas tenta descobrir o último registro, pra mudar o "separador" pra "e".

Espero ter ajudado!
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar