Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

kauebranco

Procedure que retorna valor

Recommended Posts

Preciso de uma procedure que sirva tanto pra alterar dados como pra incluir dados tb ... entaum preciso passar como parametro se é pra incluir ou alterar certo ?? enfim ..é dificil isso ?? e como eu faço pra retornar TRUE ou FALSE pra saber se deu tudo certo ou naum ???

Compartilhar este post


Link para o post
Compartilhar em outros sites

para insert ou update você criar um parametro e verifica ele com um if...

 

pra verificar erros você pode ver a variavel @@Error após cada instrução SQL, se retornar zero (0) entaum beleza naum teve erro, caso contrario ocorreu alguma falha

 

exemplo

CREATE PROCEDURE usp_Teste@Insert AS BIT, -->1-Insere, 0-Update@Valor AS INT,@Chave AS INTASSET NOCOUNT ONDECLARE @_Error INTIF @Insert = 1begininsert blablabla...values (@Valor)SELECT @_Error = @@ERRORIF (@_Error <> 0 )BEGIN	GOTO Error_HandlingENDendELSEbeginupdate blablabla... from tableX where chave = @ChaveSELECT @_Error = @@ERRORIF (@_Error <> 0 )BEGIN	GOTO Error_HandlingENDendRETURN @_Error	ERROR_HANDLING:	IF @@TRANCOUNT > 0 ROLLBACK	RETURN @_Error

 

falows,

t++

 

OBS.: gostei da campanha... paiçada isso né... depois disso nunca mais vi uma partida de futebol sequer... naum vi mais nada relacionado.... descobri q fazer pesquisas, ler um livro, andar de bike ou fazer qq. outra coisa q naum apoie essa outra "politica disfarçada" é muito melhor ...

Compartilhar este post


Link para o post
Compartilhar em outros sites

caro amigo !!!muito obrigado pela sua explicação .. num entendi algumas coisas que vou te perguntar e espero que você possa me explicar !!! por exemplo ... me disseram que num tem como retornar valor usando PROCEDURE .. somente usando FUNCTION .. poderia me explicar como funciona esse método de retornar valor pela PROCEDURE que você usou me disseram que esse RETURN só funciona na FUNCTION ... outra coisa .. pra que serve akele "SET NOCOUNT ON" ??sobre a campanha .... você disse tudo .. nem tenho mais o que falar sobre essas coisas .... simplesmente ridiculo o que fizeram .... sem comentários!!!vlww

Compartilhar este post


Link para o post
Compartilhar em outros sites

olá kauebranco, beleza

 

o RETURN funciona tanto em functions como em procedures

vamos ver um exemplo (básico) prático:

crie esta stored procedure:

CREATE PROCEDURE ASP_TESTE1@ADICAO BIT, -->1-ADICAO, 0-SUBTRACAO@VALOR1 INT,@VALOR2 INTASDECLARE @RESULT INTIF @ADICAO = 1BEGIN	RETURN @VALOR1 + @VALOR2ENDELSEBEGIN	RETURN @VALOR1 - @VALOR2END

depois é só executa-la e acompanhar os resultados:

DECLARE @RET intEXEC @RET = ASP_TESTE1 1, 10, 5 --fazendo a adicaoSELECT @RET AS Retorno_AdicaoEXEC @RET = ASP_TESTE1 0, 10, 5 --fazendo a subtracaoSELECT @RET AS Retorno_Subtracao

Outra forma de você obter retornos é com variaveis OUTPUT, exemplo:

CREATE PROCEDURE ASP_TESTE2@ADICAO BIT, -->1-ADICAO, 0-SUBTRACAO@VALOR1 INT,@VALOR2 INT,@RetStr VARCHAR(10) OUTPUTASDECLARE @RESULT INTIF @ADICAO = 1BEGIN	SET @RetStr = 'volta adicao'	RETURN @VALOR1 + @VALOR2ENDELSEBEGIN	SET @RetStr = 'volta subtracao'	RETURN @VALOR1 - @VALOR2END

executando o 2º exemplo:

DECLARE @RET intDECLARE @RetStr VARCHAR(10)EXEC @RET = ASP_TESTE2 1, 10, 5, @RetStr OUTPUT --fazendo a adicaoSELECT @RET AS Retorno_Adicao, @RetStr AS RETORNOVARIAVELEXEC @RET = ASP_TESTE2 0, 10, 5, @RetStr OUTPUT --fazendo a subtracaoSELECT @RET AS Retorno_Subtracao, @RetStr AS RETORNOVARIAVEL

sobre o SET NOCOUNT... quando ON ele mostra o numero de registros afetados e quando OFF ele naum mostra isso..

veja o exemplo do Books OnLine

USE pubsGO-- Display the count message.SELECT au_lname FROM authorsGOUSE pubsGO-- SET NOCOUNT to ON and no longer display the count message.SET NOCOUNT ONGOSELECT au_lname FROM authorsGO-- Reset SET NOCOUNT to OFF.SET NOCOUNT OFFGO

 

 

falows

t++

Compartilhar este post


Link para o post
Compartilhar em outros sites

só ficou uma duvida ....eu tentei retornar um texto ao invés de um número e da erro ..o único valor que é possivel retornar é número ?? num da pra retornar texto ?? e uma tabela ,da pra retornar ??(pela procedure)

Compartilhar este post


Link para o post
Compartilhar em outros sites

infelizmente o RETURN só retorna valores inteiros

SQL Books online

"Syntax

RETURN [ integer_expression ]

 

Arguments

integer_expression

 

Is the integer value returned. Stored procedures can return an integer value to a calling procedure or an application."

 

but... para retornar textos você poderá usar as variaveis OUTPUT...

 

 

 

para retornar tabela .. você poderia retornar um próprio select com um ou mais conjunto de dados, agora se você precisar da tabela propriamente dita você pode usar uma tabela virtual global....

 

exemplo:

CREATE PROCEDURE ASP_TESTE3ASCREATE TABLE ##TESTE (COD INT, NOME CHAR(10))INSERT INTO ##TESTE VALUES (1, 'TESTE')

e pra executar:

EXEC ASP_TESTE3 --executa a procedureSELECT * FROM ##TESTE --recupera os dados da tabelaDROP TABLE ##TESTE --mata a tabela

falows

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza .. brigadaum de novo !!entendi direitinho ..vlwwflww

falowt+

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.