STORE PROCEDURE - CRIAR LISTA DE REGISTROS
Boa tarde, pessoal
Estou precisando de ajuda com uma StoreProcedure. O cenário é o seguinte:
Tenho uma Job agendada no Servidor SQL 2000 para rodar todos os dias a 1h da manhã. Até aà está tudo ok. O problema que essa Job tem que recuperar uma lista de itens e enviar por e-mail para alguns usuários previamente selecionados.
Aà é onde está a maior dificuldade, pois nunca trabalhei com SP. Vou fazer um SELECT numa tabela e recuperar uma lista de registros. Daà tenho que inserir esta lista no corpo de um email. Como fazer isso numa SP?
Agradeço a quem puder ajudar.
Estou precisando de ajuda com uma StoreProcedure. O cenário é o seguinte:
Tenho uma Job agendada no Servidor SQL 2000 para rodar todos os dias a 1h da manhã. Até aà está tudo ok. O problema que essa Job tem que recuperar uma lista de itens e enviar por e-mail para alguns usuários previamente selecionados.
Aà é onde está a maior dificuldade, pois nunca trabalhei com SP. Vou fazer um SELECT numa tabela e recuperar uma lista de registros. Daà tenho que inserir esta lista no corpo de um email. Como fazer isso numa SP?
[ô]
Consulta a ser realizada
sSQL = [Ô]SELECT campo FROM tabela WHERE condicao;[Ô]
Set r = New ADBDB.Recordset
r.Open sSQL, cnx
[ô]Transformar a lista em linhas de um arquivo html para enviar por email
Do While Not r.EOF
var_aux = var_aux & r([Ô]campo[Ô]) & [Ô]<br />[Ô] [ô]Linhas a serem geradas
r.MoveNext
Loop
[ô]SaÃda do HTML
fileHTML = var_Header & var_Body & var_aux & var_Footer
Exec sp_EnviarEmail [ô]mail-usuario@dominio.com[ô], [ô]Aviso de agendamento[ô], fileHTML
Agradeço a quem puder ajudar.
Bem depois de muito quebrar a cabeça consegui a solução
Espero poder ajudar com esta solução
CREATE PROCEDURE teste (@lista VARCHAR(8000) OUTPUT) AS
DECLARE @varLista VARCHAR(8000);
DECLARE @varNome VARCHAR(100);
BEGIN
-- INICIALIZA AS VARIÃVEIS
SET @varLista = [ô][ô];
SELECT @varNome = NULL;
-- MONTA O CURSOR DE REGISTROS DA TABELA
DECLARE cCURSOR1 CURSOR LOCAL FOR
SELECT TOP 20 nome FROM clientes ORDER BY nome;
-- ABRE O CURSOR
OPEN cCURSOR1;
-- BUSCA AS INFORMAÇÕES DO PRIMEIRO REGISTRO
FETCH NEXT FROM cCURSOR1 INTO @varNome;
-- LOOP NOS REGISTROS SELECIONADOS
WHILE (@@FETCH_STATUS = 0)
BEGIN
-- COLOQUE AQUI OS COMANDOS SQL DA SUA PROCEDURE
SET @varLista = @varLista + @varNome + CHAR(13) + CHAR(10);
-- BUSCA AS INFORMAÇÕES DO PRÓXIMO REGISTRO
FETCH NEXT FROM cCURSOR1 INTO @varNome;
END
-- (FIM DO LOOP NOS REGISTROS SELECIONADOS) ///
-- FECHA E DESTROI O CURSOR
CLOSE cCURSOR1;
DEALLOCATE cCURSOR1;
SELECT @lista = @varLista;
RETURN
END
Espero poder ajudar com esta solução
Tópico encerrado , respostas não são mais permitidas