Uso de Variáveis

Voltar Home Acima Avançar
 

As variáveis globais @@ERROR e @@IDENTITY são utilizadas para retornar o valor do erro e o valor do último id de um campo identity respectivamente. Logo abaixo falo um pouco sobre como utilizá-las.

Usando @@ERROR 

A variável global @@ERROR é usada em Stored Procedures, Batch e Triggers. Ela retorna zero se o último comando Transact-SQL e executado com sucesso. Se o comando causar algum erro, a função @@ERROR retorna o número deste erro. Como o @@ERROR retorna um valor para cada comando SQL, então você deve testar com um comando if .. then  o valor do @@ERROR logo após a execução do comando SQL e guardar este valor dentro de uma variável do tipo Integer dentro da sua Stored Procedure.

O @@ERROR pode ser usado por exemplo para indicar o sucesso ou falha de uma Stored Procedure. No exemplo abaixo, uma variável é declarada e inicializada com 0. Depois da execução de cada comando SQL, o @@ERROR é testado, se for <> 0, é porque aconteceu algum erro durante a execução do comando, então o valor deste erro é atribuido à variável @ErrorSave. No fim da execução, a variável @ErrorSave conterá o valor do último erro gerado na execução da Strored Procedure, senão conterá o valor 0 indicando que os comandos foram executado com sucesso.

USE Northwind

GO

DROP PROCEDURE SampleProcedure

GO

--*** Stored Procedure com um parâmetro output que retorna o código

--*** do erro gerado na execução, ou zero se não houver erro

CREATE PROCEDURE SampleProcedure

 @EmployeeIDParm INT,

@MaxQuantity INT OUTPUT

AS

-- Declaração da variável que conterá o número do erro

DECLARE @ErrorSave INT

SET @ErrorSave = 0

SELECT FirstName, LastName, Title

FROM Employees

WHERE EmployeeID = @EmployeeIDParm

IF (@@Error <> 0)

SET @ErrorSave = @@Error @@ERROR

-- Atribuindo o valor para o parâmetro OUTPUT

SELECT @MaxQuantity = MAX(Quantity)

FROM [Order Details]

IF (@@Error <> 0)

SET @ErrorSave = @@Error @

@ERROR

-- Retorna 0 se nenhum erro ocorreu, senão

-- retorna o valor do erro para na úlitma transação

RETURN @ErrorSave

GO

Ir para o Topo

Usando @@IDENTITY

O @@IDENTITY é usado para retornar o útlimo valor gerado pelo campo contador (Identity) do SQL Server.

Depois de um INSERT, o @@IDENTITY contem o último valor do ID gerado. Se o comando SQL for feito sobre uma tabela que não contenha um campo do tipo IDENTITY, o valor retornado é o NULL. Se forem inseridas multiplas linhas, gerando multiplos valores identity, @@IDENTITY retorna o último valor gerado. Se o comando dispara uma ou mais TRIGGERS que executam comandos INSERT que gerem valores IDENTITY, chamando @@IDENTITY imediatamente após você obterá o último valor gerado pela trigger.

Neste exemplo, estou inserindo um registro na tabela Jobs. Logo depois eu posso usar o @@IDENTITY para saber qual o valor do ID gerado neste INSERT.

INSERT INTO jobs (job_desc,min_lvl,max_lvl)

VALUES ('Accountant',12,125)

SELECT @@IDENTITY AS 'Identity'

Como no exemplo do @@Error, dentro de uma Stored Procedure eu poderia atribuir o valor do @@IDENTITY para uma variável do tipo inteiro, e usá-lo em um outro comando SQL subsequente, ou então retorná-lo através de um parâmetro Output para a aplicação Delphi.

CREATE PROCEDURE Teste

AS

DECLARE @idJobs INT

INSERT INTO jobs (job_desc,min_lvl,max_lvl)

VALUES ('Accountant',12,125)

SELECT @idJobs = @@Identity

INSERT INTO Tabela(idJob, Campo2, Campo3)

VALUES (@idJobs, 'String2', 'String3')

Ir para o Topo

 

Todos os produtos mencionados são marcas registradas ou marcas comerciais de suas respectivas empresas.

Perguntas ou problemas a respeito deste website devem ser enviadas para
allsoft@bol.com.br

Copyright © 1999-2001 allSoft - Sistemas. Vitória/ES - Brasil. 
Todos os direitos reservados.