Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fabiano Fernandes

Insert c/ Select dentro de uma Function

Recommended Posts

Executo este comando e funciona perfeitamente no ambiente de consulta/query do banco.

 

insert into pa_cursos ( i_empresa, i_curso, nome, sigla, i_usuario, dt_sistema )

select i_empresa, i_curso, nome, sigla, i_usuario, dt_sistema

from pa_cursos_txt

where not exists(select 1 from pa_cursos where pa_cursos_txt.i_empresa=pa_cursos.i_empresa and pa_cursos_txt.i_curso=pa_cursos.i_curso);

 

delete from cursos_txt where i_empresa=@empresa and semestre=@semestre;

 

 

Mas precisava usa-lo dentro de uma Function, +/- assim:

 

 

if @tipo = 1

begin

insert into pa_cursos ( i_empresa, i_curso, nome, sigla, i_usuario, dt_sistema ) -- Linha 14

select i_empresa, i_curso, nome, sigla, i_usuario, dt_sistema

from pa_cursos_txt

where not exists(select 1 from pa_cursos where pa_cursos_txt.i_empresa=pa_cursos.i_empresa and pa_cursos_txt.i_curso=pa_cursos.i_curso);

delete from cursos_txt where i_empresa=@empresa and semestre=@semestre;

end

else if @tipo = 2

begin

delete from professores_txt where i_empresa=@empresa and semestre=@semestre;

end

 

 

 

Porém apresenta a mensagem de erro:

 

Mensagem 443, Nível 16, Estado 15, Procedimento IMPORTACAO, Linha 14

Uso inválido de um operador de efeito lateral 'INSERT' em uma função.

 

 

 

Já pesquisei neste forum e em outras fontes, e tudo indica que a sintaxe é essa mesma, mas não funciona na função, alguém identifica algum erro?

 

PS. O número de colunas das tabelas são as mesmas, isso não é, como mencionei na primeira parte se rodar no ambiente de query o comando é executado perfeitamente.

 

 

At.

Fabiano

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fabiano, faz um teste:

if @tipo = 1
begin
select i_empresa, i_curso, nome, sigla, i_usuario, dt_sistema 
from pa_cursos_txt
where not exists(select 1 from pa_cursos where pa_cursos_txt.i_empresa=pa_cursos.i_empresa and pa_cursos_txt.i_curso=pa_cursos.i_curso);	
end 

if @tipo = 2	
begin 
select 'tipo 2'
end

 

veja se qdo você passa o parametro @tipo como 1 vem o select e como 2 ele entra no if...

 

posta o resultado....

 

Abçs

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.