Ir para conteúdo
Fórum Script Brasil
  • 0

Inserir valor em variavel [RESOLVIDO]


caioamante

Pergunta

Boa tarde a todos!

Estou iniciando com o Sql Server e preciso fazer uma procedure que trabalhe da seguinte forma:

Pega uma variavel e insira a informação de um campo.

Ex:

V_Variavel

select campo_com_valor from tabela

Eu quero inserir o valor do campo com valor dentro da v_variavel e criar a procedure.

Sempre vai retornar 1 unico campo e uma unica linha.

alguém pode me ajudar?

Editado por caioamante
Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde Caio,

Declare @V_Variavel int
Set @V_Variavel = (select campo_com_valor from tabela)

O retorno do select tem q ser 1 valor apenas, pois o mesmo será atribuido à variável. Se o retorno do select for mais de 1 valor, dará erro.

Link para o comentário
Compartilhar em outros sites

  • 0
Boa tarde Caio,

Declare @V_Variavel int
Set @V_Variavel = (select campo_com_valor from tabela)

O retorno do select tem q ser 1 valor apenas, pois o mesmo será atribuido à variável. Se o retorno do select for mais de 1 valor, dará erro.

Amigo, obrigado mesmo pelo retorno.

Minha idéia é a seguinte:

Pegar essa variavel e colocar numa procedure que me traz o spid problematico e em seguida matar o spid, hoje faço esse processo manualmente, rodo o select e depois faço o kill na mão.

CREATE

PROCEDURE SP_ELIMINA_BLOCK AS

Declare @v_spid int

Set @v_spid = SELECT

spid

FROM

MASTER.DBO.SYSPROCESSES BLOCKING

WHERE

BLOCKING.BLOCKED = 0

AND EXISTS (SELECT

1

FROM

MASTER.DBO.SYSPROCESSES BLOCKED

WHERE

BLOCKED.BLOCKED = BLOCKING.SPID

);

KILL @V_SPID;

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia Caio,

Ok, entendido. Mas você não pode matar o processo utilizando uma variável. A sintaxe do sql, após o KILL espera-se um inteiro. Mesmo que a variável contenha um inteiro, o sql não consegue interpretar.

Tente fazer desta forma:

CREATE
PROCEDURE SP_ELIMINA_BLOCK AS

Declare @v_spid INT
DECLARE @Sql VARCHAR(100)

Set @v_spid = SELECT spid FROM MASTER.DBO.SYSPROCESSES BLOCKING WHERE BLOCKING.BLOCKED = 0 AND EXISTS 
(SELECT 1 FROM MASTER.DBO.SYSPROCESSES BLOCKED WHERE BLOCKED.BLOCKED = BLOCKING.SPID );

Set @Sql = 'KILL ' + cast(@V_SPID AS VARCHAR)

EXEC (@Sql)

Link para o comentário
Compartilhar em outros sites

  • 0
Bom dia Caio,

Ok, entendido. Mas você não pode matar o processo utilizando uma variável. A sintaxe do sql, após o KILL espera-se um inteiro. Mesmo que a variável contenha um inteiro, o sql não consegue interpretar.

Tente fazer desta forma:

CREATE
PROCEDURE SP_ELIMINA_BLOCK AS

Declare @v_spid INT
DECLARE @Sql VARCHAR(100)

Set @v_spid = SELECT spid FROM MASTER.DBO.SYSPROCESSES BLOCKING WHERE BLOCKING.BLOCKED = 0 AND EXISTS 
(SELECT 1 FROM MASTER.DBO.SYSPROCESSES BLOCKED WHERE BLOCKED.BLOCKED = BLOCKING.SPID );

Set @Sql = 'KILL ' + cast(@V_SPID AS VARCHAR)

EXEC (@Sql)

Parceiro.. tentei conforme me explicou mas apresenta problemas também:

>

 Linhas do script: 9-11 -----------------------

SET

@SQL = 'KILL ' + CAST(@V_SPID AS VARCHAR) EXEC (@SQL)

>[Erro] Linhas do script: 9-11 ----------------------

Must declare the scalar variable "@V_SPID".

Msg: 137, Nível: 15, Estado: 2, Procedimento: , Linha: 2

>[Erro] Linhas do script: 9-11 ----------------------

Must declare the scalar variable "@SQL".

Msg: 137, Nível: 15, Estado: 2, Procedimento: , Linha: 2

[Executado: 10/10/11 11h39min21s GMT-03:00] [Execução: 1/ms]

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia Caio,

Para o sql 2008 não.

No seu script, acrescentei um () q estava faltando. Alterei o EXEC para select. "Force" uma axecução para testes. Copie o resultado do select e execute no console. Olha se dá certo....

CREATE
PROCEDURE SP_ELIMINA_BLOCK AS

Declare @v_spid INT
DECLARE @Sql VARCHAR(100)

Set @v_spid = (SELECT spid FROM MASTER.DBO.SYSPROCESSES BLOCKING WHERE BLOCKING.BLOCKED = 0 AND EXISTS
(SELECT 1 FROM MASTER.DBO.SYSPROCESSES BLOCKED WHERE BLOCKED.BLOCKED = BLOCKING.SPID ));

Set @Sql = 'KILL ' + cast(@V_SPID AS VARCHAR)

select (@Sql)

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...