Ir para conteúdo

POWERED BY:

Arquivado

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

vegetassj4

com uma procedure

Recommended Posts

http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif

Ae galera dpois de muito tentar , resolvi pedir ajuda de vcs....

estou com uma procedure q retorna, os dados cadastrais de um cliente x, o problema é quando tem mais de uma informação

(ex...quando tem 3, 2 ou mais telefones), ae ela só ta retornando o último telefone e nunca os 3 telefones q eu quero, ae se alguém tiver uma idéia de como fazer me dá uma ajuda q a coisa ta feia....

 

eu fiz alguns testes (riscados) e eles me rotornão as 3 entradas.....menos o teste 5.....q me retorna uma só.....

 

Segue a procedure:

 

-CREATE PROC dbo.AP_CONSULTA_PESSOAL_CDE_2

declare @MATRICULA char(8)

declare @NOME varchar(40)

declare @SERVIDOR_ORGAO varchar(18)

set @MATRICULA = 'xxxxxxxx'

set @NOME ='jose limao'

set @SERVIDOR_ORGAO = '[srj0125\dsv]'

--set @MATRICULA = 'xxxxxxxx'

--set @NOME ='jose limao'

--set @SERVIDOR_ORGAO = '[srj0125\dsv]'

BEGIN

DECLARE @TSQL nvarchar(4000)

,@NOME_EMPREGADO varchar(72)

,@MATRICULA_EMPREGADO varchar(8)

,@CARGO_EMPREGADO varchar(40)

,@FUNCAO_EMPREGADO varchar(40)

,@MCU_LOTACAO char(12)

,@NOME_LOTACAO varchar(30)

,@MCU_GERENCIA char(12)

,@NOME_GERENCIA varchar(30)

,@SITUACAO_EMPREGADO char(1)

,@TEL_NU_DDD varchar (12)

,@TEL_NU_TELEFONE varchar (30)

 

 

--Tabela que irá retornar os dados

CREATE TABLE ##tmp_resultado

(NOME_EMPREGADO varchar(72)

,MATRICULA_EMPREGADO varchar(8)

,CARGO_EMPREGADO varchar(40)

,FUNCAO_EMPREGADO varchar(40)

,MCU_LOTACAO char(12)

,NOME_LOTACAO varchar(30)

,MCU_GERENCIA char(12)

,NOME_GERENCIA varchar(30)

,SITUACAO_EMPREGADO char(1)

,TEL_NU_DDD varchar (12)

,TEL_NU_TELEFONE varchar (30))

 

--Obtendo os dados do empregado

CREATE TABLE ##tmp_empregado

(PES_NO_PESSOAL varchar(72)

,PES_CO_MATRICULA varchar(8)

,ORG_CODIGO varchar(8)

,CAR_TX_CARGO varchar(40)

,FUN_TX_FUNCAO varchar(40)

,PES_TX_ATIVO char(1))

 

SET @TSQL = 'INSERT INTO ##tmp_empregado '

SET @TSQL = @TSQL + 'SELECT P.PES_NO_PESSOAL, P.PES_CO_MATRICULA, P.ORG_CODIGO, C.CAR_TX_CARGO, F.FUN_TX_FUNCAO, P.PES_TX_ATIVO '

SET @TSQL = @TSQL + 'FROM dbo.VW_CONSULTA_PESSOAL P '

SET @TSQL = @TSQL + ',dbo.PES_CARGO C '

SET @TSQL = @TSQL + ',dbo.PES_FUNCAO F '

SET @TSQL = @TSQL + 'WHERE P.CAR_CO_CARGO = C.CAR_CO_CARGO '

SET @TSQL = @TSQL + 'AND P.FUN_CO_FUNCAO = F.FUN_CO_FUNCAO '

IF @MATRICULA IS NOT NULL

SET @TSQL = @TSQL + 'AND P.PES_CO_MATRICULA = ''' + @MATRICULA + ''''

IF @NOME IS NOT NULL

SET @TSQL = @TSQL + 'AND P.PES_NO_PESSOAL LIKE ''' + @NOME + '%'''

EXEC sp_executesql @TSQL

--Existindo mais de um registro retornará todos os registros encontrados

IF (SELECT COUNT(*) AS TOTAL_EMPREGADO FROM ##tmp_empregado) > 1

BEGIN

--Lê todos os registros de empregado encontrados

DECLARE empregado_cursor CURSOR FOR

SELECT E.PES_NO_PESSOAL

,E.PES_CO_MATRICULA

,E.CAR_TX_CARGO

,E.FUN_TX_FUNCAO

,E.PES_TX_ATIVO

FROM ##tmp_empregado E

 

OPEN empregado_cursor

 

FETCH NEXT FROM empregado_cursor

INTO @NOME_EMPREGADO

,@MATRICULA_EMPREGADO

,@CARGO_EMPREGADO

,@FUNCAO_EMPREGADO

,@SITUACAO_EMPREGADO

 

WHILE @@FETCH_STATUS = 0

BEGIN

INSERT INTO ##tmp_resultado

(NOME_EMPREGADO

,MATRICULA_EMPREGADO

,CARGO_EMPREGADO

,FUNCAO_EMPREGADO

,MCU_LOTACAO

,NOME_LOTACAO

,MCU_GERENCIA

,NOME_GERENCIA

,SITUACAO_EMPREGADO)

VALUES

(@NOME_EMPREGADO

,@MATRICULA_EMPREGADO

,@CARGO_EMPREGADO

,@FUNCAO_EMPREGADO

,NULL

,NULL

,NULL

,NULL

,@SITUACAO_EMPREGADO)

 

FETCH NEXT FROM empregado_cursor

INTO @NOME_EMPREGADO

,@MATRICULA_EMPREGADO

,@CARGO_EMPREGADO

,@FUNCAO_EMPREGADO

,@SITUACAO_EMPREGADO

END

CLOSE empregado_cursor

DEALLOCATE empregado_cursor

 

--Retorno dos empregados encontrados

SELECT *

FROM ##tmp_resultado

END

ELSE

BEGIN

--Obtendo os dados da lotação do empregado

CREATE TABLE ##tmp_lotacao

(ORG_CO_MCU char(12)

,ORG_NO_ORGAO varchar(30)

,TEL_NU_DDD varchar(12)

,TEL_NU_TELEFONE varchar(30) )

 

SET @TSQL = 'INSERT INTO ##tmp_lotacao '

SET @TSQL = @TSQL + 'SELECT O.ORG_CO_MCU, O.ORG_NO_ORGAO, '

SET @TSQL = @TSQL + 'FROM ' + @SERVIDOR_ORGAO + '.DBORGAO.dbo.VW_ORGAO O, ##tmp_empregado E '

SET @TSQL = @TSQL + 'WHERE O.ORG_CO_STO = E.ORG_CODIGO '

SET @TSQL = @TSQL + 'AND ORG_IN_STATUS = ''2'' '

EXEC sp_executesql @TSQL

IF (SELECT COUNT(*) AS TOTAL_LOTACAO FROM ##tmp_lotacao) = 0

BEGIN

DELETE ##tmp_lotacao

 

SET @TSQL = 'INSERT INTO ##tmp_lotacao '

SET @TSQL = @TSQL + 'SELECT O.ORG_CO_MCU, O.ORG_NO_ORGAO, T.TEL_NU_DDD, T.TEL_NU_TELEFONE '

SET @TSQL = @TSQL + 'FROM ' + @SERVIDOR_ORGAO + '.DBORGAO.dbo.VW_ORGAO O,'+ @SERVIDOR_ORGAO + '.DBORGAO.dbo.VW_TELEFONE T,'+' ##tmp_empregado E '

SET @TSQL = @TSQL + 'WHERE O.ORG_CO_STO = E.ORG_CODIGO AND O.ORG_CO_MCU = T.ORG_CO_MCU '

SET @TSQL = @TSQL + 'ORDER BY ORG_CO_GERAL DESC'

EXEC sp_executesql @TSQL

print 'passo1'

select * from ##tmp_lotacao

END

 

--Obtendo os dados da gerência do empregado

CREATE TABLE ##tmp_gerencia

(ORG_CO_MCU_SUB char(12)

,ORG_NO_ORGAO varchar(30))

 

SET @TSQL = 'INSERT INTO ##tmp_gerencia '

SET @TSQL = @TSQL + 'SELECT H.ORG_CO_MCU_SUB, O.ORG_NO_ORGAO '

SET @TSQL = @TSQL + 'FROM ' + @SERVIDOR_ORGAO + '.DBORGAO.dbo.VW_ORGAO O, ' + @SERVIDOR_ORGAO + '.DBORGAO.dbo.VW_HIERARQUIA H, ##tmp_lotacao L '

SET @TSQL = @TSQL + 'WHERE H.ORG_CO_MCU_SUB = O.ORG_CO_MCU '

SET @TSQL = @TSQL + 'AND H.ORG_CO_MCU = L.ORG_CO_MCU '

SET @TSQL = @TSQL + 'AND O.ORG_IN_NIVEL_HIERARQUICO = ''20'' '

SET @TSQL = @TSQL + 'ORDER BY O.ORG_IN_NIVEL_HIERARQUICO DESC'

EXEC sp_executesql @TSQL

IF (SELECT COUNT(*) AS TOTAL_GERENCIA FROM ##tmp_gerencia) = 0

BEGIN

DELETE ##tmp_gerencia

 

SET @TSQL = 'INSERT INTO ##tmp_gerencia '

SET @TSQL = @TSQL + 'SELECT H.ORG_CO_MCU_SUB, O.ORG_NO_ORGAO '

SET @TSQL = @TSQL + 'FROM ' + @SERVIDOR_ORGAO + '.DBORGAO.dbo.VW_ORGAO O, ' + @SERVIDOR_ORGAO + '.DBORGAO.dbo.VW_HIERARQUIA H, ##tmp_lotacao L '

SET @TSQL = @TSQL + 'WHERE H.ORG_CO_MCU_SUB = O.ORG_CO_MCU '

SET @TSQL = @TSQL + 'AND H.ORG_CO_MCU = L.ORG_CO_MCU '

SET @TSQL = @TSQL + 'AND O.ORG_IN_NIVEL_HIERARQUICO = ''30'' '

SET @TSQL = @TSQL + 'ORDER BY O.ORG_IN_NIVEL_HIERARQUICO DESC'

EXEC sp_executesql @TSQL

END

ELSE IF (SELECT COUNT(*) AS TOTAL_GERENCIA FROM ##tmp_gerencia) = 0

BEGIN

DELETE ##tmp_gerencia

 

SET @TSQL = 'INSERT INTO ##tmp_gerencia '

SET @TSQL = @TSQL + 'SELECT H.ORG_CO_MCU_SUB, O.ORG_NO_ORGAO '

SET @TSQL = @TSQL + 'FROM ' + @SERVIDOR_ORGAO + '.DBORGAO.dbo.VW_ORGAO O, ' + @SERVIDOR_ORGAO + '.DBORGAO.dbo.VW_HIERARQUIA H, ##tmp_lotacao L '

SET @TSQL = @TSQL + 'WHERE H.ORG_CO_MCU_SUB = O.ORG_CO_MCU '

SET @TSQL = @TSQL + 'AND H.ORG_CO_MCU = L.ORG_CO_MCU '

SET @TSQL = @TSQL + 'AND O.ORG_IN_NIVEL_HIERARQUICO = ''10'' '

SET @TSQL = @TSQL + 'ORDER BY O.ORG_IN_NIVEL_HIERARQUICO DESC'

EXEC sp_executesql @TSQL

END

ELSE IF (SELECT COUNT(*) AS TOTAL_GERENCIA FROM ##tmp_gerencia) = 0

BEGIN

DELETE ##tmp_gerencia

 

SET @TSQL = 'INSERT INTO ##tmp_gerencia '

SET @TSQL = @TSQL + 'SELECT H.ORG_CO_MCU_SUB, O.ORG_NO_ORGAO '

SET @TSQL = @TSQL + 'FROM ' + @SERVIDOR_ORGAO + '.DBORGAO.dbo.VW_ORGAO O, ' + @SERVIDOR_ORGAO + '.DBORGAO.dbo.VW_HIERARQUIA H, ##tmp_lotacao L '

SET @TSQL = @TSQL + 'WHERE H.ORG_CO_MCU_SUB = O.ORG_CO_MCU '

SET @TSQL = @TSQL + 'AND H.ORG_CO_MCU = L.ORG_CO_MCU '

SET @TSQL = @TSQL + 'AND O.ORG_IN_NIVEL_HIERARQUICO = ''00'' '

SET @TSQL = @TSQL + 'ORDER BY O.ORG_IN_NIVEL_HIERARQUICO DESC'

EXEC sp_executesql @TSQL

END

 

--Obtendo todos os dados encontrados do empregado

SELECT @NOME_EMPREGADO = E.PES_NO_PESSOAL

,@MATRICULA_EMPREGADO = E.PES_CO_MATRICULA

,@CARGO_EMPREGADO = E.CAR_TX_CARGO

,@FUNCAO_EMPREGADO = E.FUN_TX_FUNCAO

,@SITUACAO_EMPREGADO = E.PES_TX_ATIVO

FROM ##tmp_empregado E

 

print 'passo2'

select count(*) from ##tmp_lotacao

IF (SELECT COUNT(*) AS TOTAL_LOTACAO FROM ##tmp_lotacao) = 0

BEGIN

SET @MCU_LOTACAO = NULL

SET @NOME_LOTACAO = NULL

SET @TEL_NU_DDD = NULL

SET @TEL_NU_TELEFONE = NULL

 

END

 

ELSE

BEGIN

SELECT @MCU_LOTACAO = L.ORG_CO_MCU

,@NOME_LOTACAO = L.ORG_NO_ORGAO

,@TEL_NU_DDD = L.TEL_NU_DDD

,@TEL_NU_TELEFONE = L.TEL_NU_TELEFONE

FROM ##tmp_lotacao L

END

print 'passo3'

select * from ##tmp_lotacao

IF (SELECT COUNT(*) AS TOTAL_GERENCIA FROM ##tmp_gerencia) = 0

BEGIN

SET @MCU_GERENCIA = NULL

SET @NOME_GERENCIA = NULL

END

ELSE

BEGIN

SELECT @MCU_GERENCIA = G.ORG_CO_MCU_SUB

,@NOME_GERENCIA = G.ORG_NO_ORGAO

 

FROM ##tmp_gerencia G

print 'passo4'

select * from ##tmp_gerencia

END

 

INSERT INTO ##tmp_resultado

(NOME_EMPREGADO

,MATRICULA_EMPREGADO

,CARGO_EMPREGADO

,FUNCAO_EMPREGADO

,MCU_LOTACAO

,NOME_LOTACAO

,MCU_GERENCIA

,NOME_GERENCIA

,SITUACAO_EMPREGADO

,TEL_NU_DDD

,TEL_NU_TELEFONE )

VALUES

(@NOME_EMPREGADO

,@MATRICULA_EMPREGADO

,@CARGO_EMPREGADO

,@FUNCAO_EMPREGADO

,@MCU_LOTACAO

,@NOME_LOTACAO

,@MCU_GERENCIA

,@NOME_GERENCIA

,@SITUACAO_EMPREGADO

,@TEL_NU_DDD

,@TEL_NU_TELEFONE )

print 'passo5'

select count(*) as total_resultado from ##tmp_resultado

DROP TABLE ##tmp_lotacao

DROP TABLE ##tmp_gerencia

 

--Retorno dos dados do empregado

SELECT *

FROM ##tmp_resultado

END

 

DROP TABLE ##tmp_empregado

DROP TABLE ##tmp_resultado

END

 

GO

 

 

 

ae galera..ajuda ae

 

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Camarada,Posta o código da sp para facilitar.você postou somente a chamda da sp.No aguado!t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Camarada,Posta o código da sp para facilitar.você postou somente a chamda da sp.No aguado!t+

:unsure: v se é isso:CREATE PROC dbo.AP_CONSULTA_PESSOAL_CDE (@MATRICULA char(8) ,@NOME varchar(40) ,@SERVIDOR_ORGAO varchar(18)) ASBEGIN DECLARE @TSQL nvarchar(4000) ,@NOME_EMPREGADO varchar(72) ,@MATRICULA_EMPREGADO varchar(8) ,@CARGO_EMPREGADO varchar(40) ,@FUNCAO_EMPREGADO varchar(40) ,@MCU_LOTACAO char(12) ,@NOME_LOTACAO varchar(30) ,@MCU_GERENCIA char(12) ,@NOME_GERENCIA varchar(30) ,@SITUACAO_EMPREGADO char(1) --Tabela que irá retornar os dados CREATE TABLE ##tmp_resultado (NOME_EMPREGADO varchar(72) ,MATRICULA_EMPREGADO varchar(8) ,CARGO_EMPREGADO varchar(40) ,FUNCAO_EMPREGADO varchar(40) ,MCU_LOTACAO char(12) ,NOME_LOTACAO varchar(30) ,MCU_GERENCIA char(12) ,NOME_GERENCIA varchar(30) ,SITUACAO_EMPREGADO char(1)) --Obtendo os dados do empregado CREATE TABLE ##tmp_empregado (PES_NO_PESSOAL varchar(72) ,PES_CO_MATRICULA varchar(8) ,ORG_CODIGO varchar(8) ,CAR_TX_CARGO varchar(40) ,FUN_TX_FUNCAO varchar(40) ,PES_TX_ATIVO char(1)) SET @TSQL = 'INSERT INTO ##tmp_empregado ' SET @TSQL = @TSQL + 'SELECT P.PES_NO_PESSOAL, P.PES_CO_MATRICULA, P.ORG_CODIGO, C.CAR_TX_CARGO, F.FUN_TX_FUNCAO, P.PES_TX_ATIVO ' SET @TSQL = @TSQL + 'FROM dbo.VW_CONSULTA_PESSOAL P ' SET @TSQL = @TSQL + ',dbo.PES_CARGO C ' SET @TSQL = @TSQL + ',dbo.PES_FUNCAO F ' SET @TSQL = @TSQL + 'WHERE P.CAR_CO_CARGO = C.CAR_CO_CARGO ' SET @TSQL = @TSQL + 'AND P.FUN_CO_FUNCAO = F.FUN_CO_FUNCAO ' IF @MATRICULA IS NOT NULL SET @TSQL = @TSQL + 'AND P.PES_CO_MATRICULA = ''' + @MATRICULA + '''' IF @NOME IS NOT NULL SET @TSQL = @TSQL + 'AND P.PES_NO_PESSOAL LIKE ''' + @NOME + '%''' EXEC sp_executesql @TSQL --Existindo mais de um registro retornará todos os registros encontrados IF (SELECT COUNT(*) AS TOTAL_EMPREGADO FROM ##tmp_empregado) > 1 BEGIN --Lê todos os registros de empregado encontrados DECLARE empregado_cursor CURSOR FOR SELECT E.PES_NO_PESSOAL ,E.PES_CO_MATRICULA ,E.CAR_TX_CARGO ,E.FUN_TX_FUNCAO ,E.PES_TX_ATIVO FROM ##tmp_empregado E OPEN empregado_cursor FETCH NEXT FROM empregado_cursor INTO @NOME_EMPREGADO ,@MATRICULA_EMPREGADO ,@CARGO_EMPREGADO ,@FUNCAO_EMPREGADO ,@SITUACAO_EMPREGADO WHILE @@FETCH_STATUS = 0 BEGIN INSERT INTO ##tmp_resultado (NOME_EMPREGADO ,MATRICULA_EMPREGADO ,CARGO_EMPREGADO ,FUNCAO_EMPREGADO ,MCU_LOTACAO ,NOME_LOTACAO ,MCU_GERENCIA ,NOME_GERENCIA ,SITUACAO_EMPREGADO) VALUES (@NOME_EMPREGADO ,@MATRICULA_EMPREGADO ,@CARGO_EMPREGADO ,@FUNCAO_EMPREGADO ,NULL ,NULL ,NULL ,NULL ,@SITUACAO_EMPREGADO) FETCH NEXT FROM empregado_cursor INTO @NOME_EMPREGADO ,@MATRICULA_EMPREGADO ,@CARGO_EMPREGADO ,@FUNCAO_EMPREGADO ,@SITUACAO_EMPREGADO END CLOSE empregado_cursor DEALLOCATE empregado_cursor --Retorno dos empregados encontrados SELECT * FROM ##tmp_resultado END ELSE BEGIN --Obtendo os dados da lotação do empregado CREATE TABLE ##tmp_lotacao (ORG_CO_MCU char(12) ,ORG_NO_ORGAO varchar(30)) SET @TSQL = 'INSERT INTO ##tmp_lotacao ' SET @TSQL = @TSQL + 'SELECT O.ORG_CO_MCU, O.ORG_NO_ORGAO ' SET @TSQL = @TSQL + 'FROM ' + @SERVIDOR_ORGAO + '.DBORGAO.dbo.VW_ORGAO O, ##tmp_empregado E ' SET @TSQL = @TSQL + 'WHERE O.ORG_CO_STO = E.ORG_CODIGO ' SET @TSQL = @TSQL + 'AND ORG_IN_STATUS = ''2'' ' EXEC sp_executesql @TSQL IF (SELECT COUNT(*) AS TOTAL_LOTACAO FROM ##tmp_lotacao) = 0 BEGIN DELETE ##tmp_lotacao SET @TSQL = 'INSERT INTO ##tmp_lotacao ' SET @TSQL = @TSQL + 'SELECT O.ORG_CO_MCU, O.ORG_NO_ORGAO ' SET @TSQL = @TSQL + 'FROM ' + @SERVIDOR_ORGAO + '.DBORGAO.dbo.VW_ORGAO O, ##tmp_empregado E ' SET @TSQL = @TSQL + 'WHERE O.ORG_CO_STO = E.ORG_CODIGO ' SET @TSQL = @TSQL + 'ORDER BY ORG_CO_GERAL DESC' EXEC sp_executesql @TSQL END --Obtendo os dados da gerência do empregado CREATE TABLE ##tmp_gerencia (ORG_CO_MCU_SUB char(12) ,ORG_NO_ORGAO varchar(30)) SET @TSQL = 'INSERT INTO ##tmp_gerencia ' SET @TSQL = @TSQL + 'SELECT H.ORG_CO_MCU_SUB, O.ORG_NO_ORGAO ' SET @TSQL = @TSQL + 'FROM ' + @SERVIDOR_ORGAO + '.DBORGAO.dbo.VW_ORGAO O, ' + @SERVIDOR_ORGAO + '.DBORGAO.dbo.VW_HIERARQUIA H, ##tmp_lotacao L ' SET @TSQL = @TSQL + 'WHERE H.ORG_CO_MCU_SUB = O.ORG_CO_MCU ' SET @TSQL = @TSQL + 'AND H.ORG_CO_MCU = L.ORG_CO_MCU ' SET @TSQL = @TSQL + 'AND O.ORG_IN_NIVEL_HIERARQUICO = ''20'' ' SET @TSQL = @TSQL + 'ORDER BY O.ORG_IN_NIVEL_HIERARQUICO DESC' EXEC sp_executesql @TSQL IF (SELECT COUNT(*) AS TOTAL_GERENCIA FROM ##tmp_gerencia) = 0 BEGIN DELETE ##tmp_gerencia SET @TSQL = 'INSERT INTO ##tmp_gerencia ' SET @TSQL = @TSQL + 'SELECT H.ORG_CO_MCU_SUB, O.ORG_NO_ORGAO ' SET @TSQL = @TSQL + 'FROM ' + @SERVIDOR_ORGAO + '.DBORGAO.dbo.VW_ORGAO O, ' + @SERVIDOR_ORGAO + '.DBORGAO.dbo.VW_HIERARQUIA H, ##tmp_lotacao L ' SET @TSQL = @TSQL + 'WHERE H.ORG_CO_MCU_SUB = O.ORG_CO_MCU ' SET @TSQL = @TSQL + 'AND H.ORG_CO_MCU = L.ORG_CO_MCU ' SET @TSQL = @TSQL + 'AND O.ORG_IN_NIVEL_HIERARQUICO = ''30'' ' SET @TSQL = @TSQL + 'ORDER BY O.ORG_IN_NIVEL_HIERARQUICO DESC' EXEC sp_executesql @TSQL END ELSE IF (SELECT COUNT(*) AS TOTAL_GERENCIA FROM ##tmp_gerencia) = 0 BEGIN DELETE ##tmp_gerencia SET @TSQL = 'INSERT INTO ##tmp_gerencia ' SET @TSQL = @TSQL + 'SELECT H.ORG_CO_MCU_SUB, O.ORG_NO_ORGAO ' SET @TSQL = @TSQL + 'FROM ' + @SERVIDOR_ORGAO + '.DBORGAO.dbo.VW_ORGAO O, ' + @SERVIDOR_ORGAO + '.DBORGAO.dbo.VW_HIERARQUIA H, ##tmp_lotacao L ' SET @TSQL = @TSQL + 'WHERE H.ORG_CO_MCU_SUB = O.ORG_CO_MCU ' SET @TSQL = @TSQL + 'AND H.ORG_CO_MCU = L.ORG_CO_MCU ' SET @TSQL = @TSQL + 'AND O.ORG_IN_NIVEL_HIERARQUICO = ''10'' ' SET @TSQL = @TSQL + 'ORDER BY O.ORG_IN_NIVEL_HIERARQUICO DESC' EXEC sp_executesql @TSQL END ELSE IF (SELECT COUNT(*) AS TOTAL_GERENCIA FROM ##tmp_gerencia) = 0 BEGIN DELETE ##tmp_gerencia SET @TSQL = 'INSERT INTO ##tmp_gerencia ' SET @TSQL = @TSQL + 'SELECT H.ORG_CO_MCU_SUB, O.ORG_NO_ORGAO ' SET @TSQL = @TSQL + 'FROM ' + @SERVIDOR_ORGAO + '.DBORGAO.dbo.VW_ORGAO O, ' + @SERVIDOR_ORGAO + '.DBORGAO.dbo.VW_HIERARQUIA H, ##tmp_lotacao L ' SET @TSQL = @TSQL + 'WHERE H.ORG_CO_MCU_SUB = O.ORG_CO_MCU ' SET @TSQL = @TSQL + 'AND H.ORG_CO_MCU = L.ORG_CO_MCU ' SET @TSQL = @TSQL + 'AND O.ORG_IN_NIVEL_HIERARQUICO = ''00'' ' SET @TSQL = @TSQL + 'ORDER BY O.ORG_IN_NIVEL_HIERARQUICO DESC' EXEC sp_executesql @TSQL END --Obtendo todos os dados encontrados do empregado SELECT @NOME_EMPREGADO = E.PES_NO_PESSOAL ,@MATRICULA_EMPREGADO = E.PES_CO_MATRICULA ,@CARGO_EMPREGADO = E.CAR_TX_CARGO ,@FUNCAO_EMPREGADO = E.FUN_TX_FUNCAO ,@SITUACAO_EMPREGADO = E.PES_TX_ATIVO FROM ##tmp_empregado E IF (SELECT COUNT(*) AS TOTAL_LOTACAO FROM ##tmp_lotacao) = 0 BEGIN SET @MCU_LOTACAO = NULL SET @NOME_LOTACAO = NULL END ELSE BEGIN SELECT @MCU_LOTACAO = L.ORG_CO_MCU ,@NOME_LOTACAO = L.ORG_NO_ORGAO FROM ##tmp_lotacao L END IF (SELECT COUNT(*) AS TOTAL_GERENCIA FROM ##tmp_gerencia) = 0 BEGIN SET @MCU_GERENCIA = NULL SET @NOME_GERENCIA = NULL END ELSE BEGIN SELECT @MCU_GERENCIA = G.ORG_CO_MCU_SUB ,@NOME_GERENCIA = G.ORG_NO_ORGAO FROM ##tmp_gerencia G END INSERT INTO ##tmp_resultado (NOME_EMPREGADO ,MATRICULA_EMPREGADO ,CARGO_EMPREGADO ,FUNCAO_EMPREGADO ,MCU_LOTACAO ,NOME_LOTACAO ,MCU_GERENCIA ,NOME_GERENCIA ,SITUACAO_EMPREGADO) VALUES (@NOME_EMPREGADO ,@MATRICULA_EMPREGADO ,@CARGO_EMPREGADO ,@FUNCAO_EMPREGADO ,@MCU_LOTACAO ,@NOME_LOTACAO ,@MCU_GERENCIA ,@NOME_GERENCIA ,@SITUACAO_EMPREGADO) DROP TABLE ##tmp_lotacao DROP TABLE ##tmp_gerencia --Retorno dos dados do empregado SELECT * FROM ##tmp_resultado END DROP TABLE ##tmp_empregado DROP TABLE ##tmp_resultadoENDGO

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.