Atualmente estou trabalhando com um procedimento armazenado que executa uma instrução INSERT usando EXEC sp_executesql
. O procedimento usa vários parâmetros, incluindo @TRANSACTIONNUM
, @CUSTOMERNUM
, @VALUE
e @VALID
. O valor de @VALID
está atualmente codificado para 0
. No entanto, preciso definir dinamicamente o valor @VALID
com base em determinadas condições sempre que o SP for chamado.
O desafio é que esse procedimento armazenado está sendo chamado por um aplicativo de software e não podemos nos dar ao luxo de atualizar o software ou desligar o servidor neste momento para fazer alterações.
Uma solução possível que ouvi é Wrapper function
: No entanto, não tenho certeza se isso seria viável ou se há alguma armadilha ou limitação potencial a ser considerada.
Aqui está o procedimento armazenado atual chamado pelo software mencionado acima (obtido de SQL profiler
):
EXEC sp_executesql
N'
INSERT INTO CUSTOMERINVEST
(
TRANSACTIONNUM,
CUSTOMERNUM,
VALUE,
VALID
)
VALUES
(
@TRANSACTIONNUM,
@CUSTOMERNUM,
@VALUE,
@VALID
)
',
N'
@TRANSACTIONNUM nvarchar(25),
@CUSTOMERNUM nvarchar(25),
@VALUE nvarchar(25),
@VALID int
',
@TRANSACTIONNUM = '4567654-879975',
@CUSTOMERNUM = '7654666765',
@VALUE = '86786765675',
@VALID = 0
No SQL Server 2008, tente criar este procedimento armazenado wrapper: