Guest - Michelle - Postado Julho 17, 2006 Denunciar Share Postado Julho 17, 2006 Estou criando uma procedure que faz uma consulta e executa outras duas procedures para cada registro da consulta.CREATE PROCEDURE sp_atualDiariaVerifDebNet--@datainicio varchar(10),--@datafim varchar(10),--@vencimento varchar (10)--@retorno varchar(2) OUTPUTASBEGINDECLARE @nr_aluno varchar(9), @ant varchar(5), @atual varchar(5)DECLARE cursor_deb CURSOR FORSELECT top 10 E1_CLIENTE FROM V_SE1_DEB WHERE E1_CLIENTE > 100000000 AND E1_CLIENTE < 399999999OPEN cursor_debSET NOCOUNT ON--SELECT @idMenu=tp_servico,@nomeMenu=ds_descricao FROM f_servico WHERE tp_servico=@servicoFETCH NEXT FROM cursor_deb INTO @nr_alunoWHILE @@FETCH_STATUS = 0BEGIN--SELECT @retorno='<li><a href=teste.asp?id='+cast(@idMenu as varchar)+'>'+cast(@nomeMenu as varchar)+'</a></li>'exec sp_atualDiariaSE1VerificaDebitosReneg '100010057','20060601','20061130','20060717',@atual OUTPUT -- atualexec sp_atualDiariaSE1VerificaDebitosAnt '100010057','20060701',@ant OUTPUT -- anteriorprint @atual+' '+@antFETCH NEXT FROM cursor_deb INTO @nr_alunoENDSET NOCOUNT OFFCLOSE cursor_debDEALLOCATE cursor_debENDGOPorem, quando executo a procedure, ocorre o erro:Server: Msg 8144, Level 16, State 2, Procedure sp_atualDiariaSE1VerificaDebitosReneg, Line 0Too many arguments were supplied for procedure sp_atualDiariaSE1VerificaDebitosReneg.alguém sabe o que posso fazer para reparar esse erro, ou então mudar a chamada das procedures???Obrigada. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Julho 17, 2006 Denunciar Share Postado Julho 17, 2006 exec sp_atualDiariaSE1VerificaDebitosReneg '100010057','20060601','20061130','20060717',@atual OUTPUT -- atualo problema (acho) está aqui. você acho que esta passando mais parametros do que a procedure realmente pode receber. tipo, todos esses valores que você passou são mesmo parametros dessa procedure sp_atualDiariaSE1VerificaDebitosReneg? da uma olhada se você não passou a mais, ou esqueceu de declarar o parametro na propria sub sp_atualDiariaSE1VerificaDebitosReneg.ou talvez o erro esteja na sub sp_atualDiariaSE1VerificaDebitosReneg mesmo, tente testar ela direto no query analizer pra ver se não da problema.otra coisa, o que faz o OUTPUT no final da linha?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest - Michelle - Postado Julho 17, 2006 Denunciar Share Postado Julho 17, 2006 Olá amigo,Verifiquei a procedure e está correta.Coloquei o OUTPUT no fim da linha para retornar o valor executado pela procedure, você sabe como poderia retornar o resultado da procedure de uma forma melhor???Tentei modificar o código, mas não reconhece a sintaxeset @atual = EXEC (sp_atualDiariaSE1VerificaDebitosReneg @matricula='100010057',@datainicio='20060601',@datafim'20061130',@vencimento'20060717')você pode me ajudar???Obrigada :-) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Julho 17, 2006 Denunciar Share Postado Julho 17, 2006 poste o codigo da sp_atualDiariaSE1VerificaDebitosReneg inteira.esse erro é so na hora de executar?? quando você poe check syntax, ele não acusa nada?e se você pusesse select @atual = EXEC (sp_atualDiariaSE1VerificaDebitosReneg @matricula='100010057',@datainicio='20060601',@datafim='20061130',@vencimento='20060717')?esses parametros @datainicio, etc estao em que formato?? se for datetime, ele aceita mesmo essa data sem formatacao?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest - michelle - Postado Julho 17, 2006 Denunciar Share Postado Julho 17, 2006 olha essa é a procedure completaCREATE PROCEDURE sp_atualDiariaVerifDebNet--@datainicio varchar(10),--@datafim varchar(10),--@vencimento varchar (10)--@retorno varchar(2) OUTPUTASBEGINDECLARE @nr_aluno varchar(9), @ant varchar(5), @atual varchar(5), @query varchar(100)DECLARE cursor_deb CURSOR FORSELECT top 10 E1_CLIENTE FROM V_SE1_DEB WHERE E1_CLIENTE > 100000000 AND E1_CLIENTE < 399999999OPEN cursor_debSET NOCOUNT ON--SELECT @idMenu=tp_servico,@nomeMenu=ds_descricao FROM f_servico WHERE tp_servico=@servicoFETCH NEXT FROM cursor_deb INTO @nr_alunoWHILE @@FETCH_STATUS = 0BEGIN--SELECT @retorno='<li><a href=teste.asp?id='+cast(@idMenu as varchar)+'>'+cast(@nomeMenu as varchar)+'</a></li>'select @atual = EXEC ('sp_atualDiariaSE1VerificaDebitosReneg @matricula=100010057,@datainicio=20060601,@datafim=20061130,@vencimento=20060717')select @ant = EXEC ('sp_atualDiariaSE1VerificaDebitosAnt @matricula=100010057, @vencimento=20060701')print @atual+' '+@antFETCH NEXT FROM cursor_deb INTO @nr_alunoENDSET NOCOUNT OFFCLOSE cursor_debDEALLOCATE cursor_debENDGOcoloquei as linhas como você falou, mas ocorreu erro de sintaxe "EXEC"os parametros estao como varchar, já testei passando a data nesse formato e ele aceita. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Julho 17, 2006 Denunciar Share Postado Julho 17, 2006 poste o codigo td da sp_atualDiariaSE1VerificaDebitosRenegdo jeito que tava antes: set @atual = EXEC (sp_atualDiariaSE1VerificaDebitosReneg @matricula='100010057',@datainicio='20060601',@datafim'20061130',@vencimento'20060717') faltaram dois sinais de igual, sera que não funciona assim: set @atual = EXEC (sp_atualDiariaSE1VerificaDebitosReneg @matricula='100010057',@datainicio='20060601',@datafim='20061130',@vencimento='20060717')? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest - michelle - Postado Julho 17, 2006 Denunciar Share Postado Julho 17, 2006 beleza vlw Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest - Michelle -
Estou criando uma procedure que faz uma consulta e executa outras duas procedures para cada registro da consulta.
CREATE PROCEDURE sp_atualDiariaVerifDebNet
--@datainicio varchar(10),
--@datafim varchar(10),
--@vencimento varchar (10)
--@retorno varchar(2) OUTPUT
AS
BEGIN
DECLARE @nr_aluno varchar(9), @ant varchar(5), @atual varchar(5)
DECLARE cursor_deb CURSOR FOR
SELECT top 10 E1_CLIENTE FROM V_SE1_DEB WHERE E1_CLIENTE > 100000000 AND E1_CLIENTE < 399999999
OPEN cursor_deb
SET NOCOUNT ON
--SELECT @idMenu=tp_servico,@nomeMenu=ds_descricao FROM f_servico WHERE tp_servico=@servico
FETCH NEXT FROM cursor_deb INTO @nr_aluno
WHILE @@FETCH_STATUS = 0
BEGIN
--SELECT @retorno='<li><a href=teste.asp?id='+cast(@idMenu as varchar)+'>'+cast(@nomeMenu as varchar)+'</a></li>'
exec sp_atualDiariaSE1VerificaDebitosReneg '100010057','20060601','20061130','20060717',@atual OUTPUT -- atual
exec sp_atualDiariaSE1VerificaDebitosAnt '100010057','20060701',@ant OUTPUT -- anterior
print @atual+' '+@ant
FETCH NEXT FROM cursor_deb INTO @nr_aluno
END
SET NOCOUNT OFF
CLOSE cursor_deb
DEALLOCATE cursor_deb
END
GO
Porem, quando executo a procedure, ocorre o erro:
Server: Msg 8144, Level 16, State 2, Procedure sp_atualDiariaSE1VerificaDebitosReneg, Line 0
Too many arguments were supplied for procedure sp_atualDiariaSE1VerificaDebitosReneg.
alguém sabe o que posso fazer para reparar esse erro, ou então mudar a chamada das procedures???
Obrigada.
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.