@@CURSOR_ROWS
Esta variável é útil para obtermos o número de linhas que um cursor do SQL Server contém. Ela sempre faz referência ao número de linhas do último cursor gerado.
Exemplo:
— Declara o cursor. Observem que estou utilizando TOP 10
DECLARE CUR_TESTE CURSOR FOR
SELECT TOP 10 TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
— Abre o cursor
OPEN CUR_TESTE
— Pula para a próxima linha , iniciando a leitura
FETCH NEXT FROM CUR_TESTE
— Mostra quantas linhas o cursor possui. No nosso exemplo , 10
SELECT @@CURSOR_ROWS
— Fecha o cursor
CLOSE CUR_TESTE
— Desaloca a memória do cursor
DEALLOCATE CUR_TESTE
@@ERROR
Uma da variáveis globais mais importante, @@ERROR é utilizada para verificar se houve algum erro após a execução de uma instrução SQL. Se não ocorrer nenhum erro, @@ERROR é definida como 0. Caso contrário, o código do erro é guardado em @@ERROR. A cada nova instrução SQL enviada ao servidor, o valor de @@ERROR é modificado.
Exemplo:
— Inicia a transação
BEGIN TRANSACTION
— Faz a atualização dos dados efetuando uma divisão
UPDATE TABELA SET CAMPO3 = CAMPO1/CAMPO2
— Se ocorrer um erro , @@ERROR será diferente de 0
IF @@ERROR = 0
BEGIN
— Confirma a atualização dos dados
COMMIT TRANSACTION
END
ELSE
BEGIN
— Cancela qualquer dado que tenha sido efetuado pelo UPDATE
ROLLBACK TRANSACTION
RETURN
END
@@FETCH_STATUS
Retorna o status gerado pela última instrução FETCH sobre um cursor. @@FETCH_STATUS retorna 0 se a última instrução FETCH aplicada por um cursor for feita com sucesso.
Um uso muito comum de @@FETCH_STATUS é quando percorremos as linhas do cursor uma a uma em um loop. Um valor @@FETCH_STATUS negativo vai indicar que já ultrapassamos a última linha do cursor.
Exemplo:
— Declara o cursor
DECLARE CUR_TESTE CURSOR FOR
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
DECLARE @VAR VARCHAR(50)
— Abre o cursor
OPEN CUR_TESTE
— Pula para a próxima linha, iniciando a leitura
FETCH NEXT FROM CUR_TESTE INTO @VAR
— Faça enquanto o FETCH foi feito com sucesso
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT NOME DA TABELA: + @VAR
— Pula para a próxima linha
FETCH NEXT FROM CUR_TESTE INTO @VAR
END
— Fecha o cursor
CLOSE CUR_TESTE
— Desaloca a memória do cursor
DEALLOCATE CUR_TESTE
@@IDENTITY
Retorna o último valor inserido automaticamente em um coluna com a propriedade IDENTITY. Embora também podemos obter o último valor inserido automaticamente em uma coluna que possui a propriedade IDENTITY, através das funções IDENT_CURRENT() e SCOPE_IDENTITY().
@@MAX_CONNECTIONS
Esta variável contém o número máximo de usuários conectados simultaneamente permitidos pelo SQL Server. O valor padrão para esta configuração é 32.767.
O valor retornado por @@MAX_CONNECTIONS não necessariamente diz que o servidor vai permitir todos estes usuários pendurados ao mesmo tempo. O valor real de usuários simultâneos conectados vai depender dos recursos disponíveis e de outros fatores.
Para alterar o valor de @@MAX_CONNECTIONS, utilize a system Stored Procedure sp_configure.
@@NESTLEVEL
Retorna o nível de encadeamento da pilha de Stored Procedures (call stack). Ou seja, se a aplicação chama uma Stored Procedure PROC_A, @@NESTLEVEL vai estar inicialmente com 1. Se PROC_A chama uma outra Stored Procedure PROC_B, o valor de @@NESTLEVEL dentro de PROC_B vai estar como 2. Quando PROC_B retornar, o valor de @@NESTLEVEL vai ser decrementado.
Este variável é muito útil para Stored Procedures recursivas, podendo ajudar a evitar que a execução caia em um loop infinito. @@NESTLEVEL também é aplicável a User Defined Functions.
@@ROWCOUNT
@@ROWCOUNT serve para mostrar quantas linhas a última instrução SQL afetou.
Cuidado: a cada nova instrução SQL enviada ao servidor um novo valor para @@ROWCOUNT é gerado. O valor de @@ROWCOUNT nunca vai ser superior ao valor configurado pela instrução SET ROWCOUNT.
Exemplo:
— Faz uma atualização na tabela
UPDATE pubs..authors SET state=’CA’
where city = ‘Oakland’
— Retorna quantas linhas foram alteradas pelo UPDATE acima. Neste caso 5
SELECT @@ROWCOUNT
@@SERVERNAME
Retorna o nome do servidor que o usuário está conectado. Retorna inclusive o nome da instância do SQL Server, utilizando o seguinte formato:
<nome_servidor><nome_instância>
@@SPID
Retorna qual é o ID do processo de um dado usuário. Todo usuário que se conecta ao banco possui um ID de processo que é utilizado para identificar um usuário conectado no banco de dados.
@@VERSION
Retorna informações sobre a versão do SQL Server que está rodando. O valor é modificado sempre que um Service Packs ou patch é aplicado no servidor.
Exemplo:
SELECT @@VERSION
Resultado:
Microsoft SQL Server 2000 – 8.00.818 (Intel X86)
May 31 2003 16:08:15
Copyright (c) 1988-2003 Microsoft Corporation
Enterprise Edition on Windows NT 5.0 (Build 2195: Service Pack 4)
Indicando um SQL Server 2000 com SP3a e build 818

