Jump to content
Fórum Script Brasil
  • 0

Inserir valor em variavel [RESOLVIDO]


caioamante

Question

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?

Edited by caioamante
Link to comment
Share on other sites

8 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...