Usuário com melhor resposta
Procedure Variaveis

Pergunta
-
Boa Noite,
Caros,
gostaria de rodar uma procedure ao qual os parametros de entrada decidira qual coluna na tabela o dado sera enviado...por exemplo:
ALTER PROCEDURE [dbo].[testeproc]
@var nvarchar(10)
as
UPDATE Base.dbo.teste
SET @var = 4 WHERE (a= 2) AND (b<= 50) ;
ou seja @var pode ser uma coluna x na tabela ou uma coluna y......
blza!
Valew!
Respostas
-
Tiodimi,
Como você destacou que a quantidade de Updates é fixo, poderiamos entar criar variáveis para cada Update definir o código desta forma:
Code SnippetCREATE
PROCEDURE uspAtualiza@Tabela
@Coluna
VARCHAR(30),@Valor
VARCHAR(100),@FlagTexto
CHAR(1)AS
DECLARE
@cmdSQL VARCHAR(200),@cmdSQL1 VARCHAR(200),
SET
@cmdSQL = 'UPDATE ' + @Tabela + ' SET ' + @Coluna + ' = 'SET
@cmdSQL1 = 'UPDATE ' + @Tabela + ' SET ' + @Coluna + ' = 'SET
@cmdSQL2 = 'UPDATE ' + @Tabela + ' SET ' + @Coluna + ' = 'IF
@FlagTexto = 'S' Begin SET @cmdSQL = @cmdSQL + '''' + @Valor + '''' SET @cmdSQL1 = @cmdSQL2 + '''' + @Valor + '''' SET @cmdSQL1 = @cmdSQL2 + '''' + @Valor + '''' EndIF
@FlagTexto = 'N' Begin SET @cmdSQL = @cmdSQL + @Valor SET @cmdSQL1 = @cmdSQL1 + @Valor SET @cmdSQL2 = @cmdSQL2 + @Valor EndEXEC
(@cmdSQL)Fiz uma pequena adaptação ao exemplo do Gustavo, mas vou pensar em uma solução para utilizar um número menor de variáveis.
Todas as Respostas
-
Boa Noite,
Você terá que usar uma SQL dinâmica. O script abaixo é um começo:
Code SnippetCREATE
PROCEDURE uspAtualiza@Tabela
@Coluna
VARCHAR(30),@Valor
VARCHAR(100),@FlagTexto
CHAR(1)AS
DECLARE
@cmdSQL VARCHAR(200)SET
@cmdSQL = 'UPDATE ' + @Tabela + ' SET ' + @Coluna + ' = 'IF
@FlagTexto = 'S'IF
@FlagTexto = 'N'EXEC
(@cmdSQL)Agora é codificar sua cláusula WHERE se for o caso.
[ ]s,
Gustavo
-
-
-
-
-
-
-
Tiodimi,
Como você destacou que a quantidade de Updates é fixo, poderiamos entar criar variáveis para cada Update definir o código desta forma:
Code SnippetCREATE
PROCEDURE uspAtualiza@Tabela
@Coluna
VARCHAR(30),@Valor
VARCHAR(100),@FlagTexto
CHAR(1)AS
DECLARE
@cmdSQL VARCHAR(200),@cmdSQL1 VARCHAR(200),
SET
@cmdSQL = 'UPDATE ' + @Tabela + ' SET ' + @Coluna + ' = 'SET
@cmdSQL1 = 'UPDATE ' + @Tabela + ' SET ' + @Coluna + ' = 'SET
@cmdSQL2 = 'UPDATE ' + @Tabela + ' SET ' + @Coluna + ' = 'IF
@FlagTexto = 'S' Begin SET @cmdSQL = @cmdSQL + '''' + @Valor + '''' SET @cmdSQL1 = @cmdSQL2 + '''' + @Valor + '''' SET @cmdSQL1 = @cmdSQL2 + '''' + @Valor + '''' EndIF
@FlagTexto = 'N' Begin SET @cmdSQL = @cmdSQL + @Valor SET @cmdSQL1 = @cmdSQL1 + @Valor SET @cmdSQL2 = @cmdSQL2 + @Valor EndEXEC
(@cmdSQL)Fiz uma pequena adaptação ao exemplo do Gustavo, mas vou pensar em uma solução para utilizar um número menor de variáveis.
-
-
-
a quantidade..é fixa...mais é assim..tipo..esses updates...vem de outro software nao sou eu q escrevo...ou seja...para criar a procedure...é so copiar e colar...mais....tenho q colocar um exec..no final de cada..update..o numero de update...é fixo ...tipo hoje eu tenho uma 'syntax' com 30 updates....o q eu pensei é se tem tipo....um exec geral....?!!
valew!