Gostaria de saber se existe a possibilidade de uma stored procedure (SqlServer 2003) chamar um .jar
Estou mexendo com banco de dados SqlServer2003 e preciso implementar uma trigger onde cada registro inserido(insert) ou atualizado (update) passe por essa rotina java e me retorne um valor a ser persistido na tabela … Em PostgreSQL e Oracle sei que é possível fazer … e em SQLServer2003???
Como fiquei de postar os resultados (demorou pela correria do final de ano) … ai vai
Como o amigo jakefrog citou … basta utilizar o comando xp_cmdshell do SqlServer … porém encontrei mais alguns problemas que foram solucionados no exemplo ilustrativo abaixo.
1o. Executar o .Jar e recuperar seu resultado. O comando xp_cmdshell só retorna 0 quando o comando foi bem sucedido e 1 quando não.
Solução: O output era sempre exibido em forma de query … então pq não tentar salvar esse resultado em uma tabela? foi o que fiz.
2o. Trabalhar com varias chamadas, já que a proposta era uma trigger em insert e update.
Solução: Criar uma tabela temporaria, para não ter que controlar o que era inserido e etc.
Após salvar o resultado em uma query temporária, foi só retornar com select o campo da tabela temporária!!!
Segue o exemplo abaixo!!!
mais uma vez obrigado pela força jakefrog! Abracaum!!!
create procedure sp_ilustrar(
@x_il varchar(250),
@x_result_il varchar(250) output)
as
declare
@linha varchar(250)
begin
set @linha = 'java -jar c:\Teste.jar "' + @x_il + '"'
begin transaction
CREATE TABLE #tb_tmp(
nm_tmp varchar(255)
)
INSERT INTO #tb_tmp
exec xp_cmdshell @linha
commit
set @x_result_il = (select top 1 nm_tmp from #tb_tmp)
end