Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
ALTER procedure [dbo].[RelResumoItens3]
@Report_Name varchar(100),
@Area varchar(100),
@Celula varchar(100),
@Linha varchar(100),
@TipoIten varchar(3),
@Catalogo varchar(50),
@DataIni datetime ,
@DataFim datetime
AS
BEGIN
SET NOCOUNT ON
-----------------------------------------------------------
-- Tabela de retorno da Procedure
-----------------------------------------------------------
Create Table #Retorno (
ProductDescription varchar(50),
[Tipo Item] varchar(50),
PU_Desc varchar(50),
Description varchar(50),
MetricUnits varchar(50),
LReject varchar(50),
Target varchar(50),
UReject varchar(50),
Average varchar(50),
Std_Dev varchar(50),
Minimum char(50),
Maximum char(50),
--Mini float,
--Maxi float,
Count varchar(50),
PorcFora varchar(50),
PorcAbaixo varchar(50),
PorcAcima varchar(50),
Farol varchar(50),
cpk as ( Minimum + Maximum)
--DataIni datetime,
--DataFim datetime
)
-----------------------------------------------------------
--Variáveis
-----------------------------------------------------------
DECLARE @VAR AS BIGINT
DECLARE @SQL AS VARCHAR(500)
DECLARE @PROCEDURE AS VARCHAR(100)
-- *
-----------------------------------------------------------
--Declaração do Cursor
-----------------------------------------------------------
IF @Area <> '' BEGIN
IF @Linha <> '' BEGIN
DECLARE RELATORIOS CURSOR FOR
SELECT Report_Id
FROM SPI_TB_RELATORIOS_PTP
WHERE Area = @Area AND Linha = @Linha
END ELSE BEGIN
DECLARE RELATORIOS CURSOR FOR
SELECT Report_Id
FROM SPI_TB_RELATORIOS_PTP
WHERE Area = @Area
END
-- *
END ELSE IF @Catalogo <> '' BEGIN
IF @Linha <> '' BEGIN
DECLARE RELATORIOS CURSOR FOR
SELECT Report_Id
FROM SPI_TB_RELATORIOS_PTP
WHERE Catalogo = @Catalogo AND Linha = @Linha
END ELSE BEGIN
DECLARE RELATORIOS CURSOR FOR
SELECT Report_Id
FROM SPI_TB_RELATORIOS_PTP
WHERE Catalogo = @Catalogo
END
-- *
END ELSE IF @Report_Name <> '' BEGIN
IF @Linha <> '' BEGIN
DECLARE RELATORIOS CURSOR FOR
SELECT Report_Id
FROM SPI_TB_RELATORIOS_PTP
WHERE Report_Name = @Report_Name AND Linha = @Linha
END ELSE BEGIN
DECLARE RELATORIOS CURSOR FOR
SELECT Report_Id
FROM SPI_TB_RELATORIOS_PTP
WHERE Report_Name = @Report_Name
END
-- *
END ELSE IF @Celula <> '' BEGIN
IF @Linha <> '' BEGIN
DECLARE RELATORIOS CURSOR FOR
SELECT Report_Id
FROM SPI_TB_RELATORIOS_PTP
WHERE Celula = @Celula AND Linha = @Linha
END ELSE BEGIN
DECLARE RELATORIOS CURSOR FOR
SELECT Report_Id
FROM SPI_TB_RELATORIOS_PTP
WHERE Celula = @Celula
END
-- *
END ELSE IF @Linha <> '' BEGIN
DECLARE RELATORIOS CURSOR FOR
SELECT Report_Id
FROM SPI_TB_RELATORIOS_PTP
WHERE Linha = @Linha
END ELSE BEGIN
DECLARE RELATORIOS CURSOR FOR
SELECT Report_Id
FROM SPI_TB_RELATORIOS_PTP
END
-- *
-----------------------------------------------------------
--ABRINDO CURSOR
-----------------------------------------------------------
OPEN RELATORIOS FETCH NEXT FROM RELATORIOS
INTO @VAR
-- *
-----------------------------------------------------------
-- EQTO CURSOR ABERTO FAZ AS PESQUISAS
-----------------------------------------------------------
IF (@@FETCH_STATUS = 0) BEGIN
WHILE (@@FETCH_STATUS = 0) BEGIN
--Obtém o nome da procedure
SELECT @PROCEDURE = ProcResumoItens
FROM SPI_TB_RELATORIOS_PTP
WHERE Report_Id = @VAR
-- *
--Monta a pesquisa
SET @SQL = ''
SET @SQL = ' INSERT INTO #Retorno'
SET @SQL = @SQL + ' exec ' + @PROCEDURE
SET @SQL = @SQL + ' ' + CONVERT(varchar, @VAR)
SET @SQL = @SQL + ', ''' + convert(varchar, @DataIni, 1) + ' ' + convert(varchar, @DataIni, 8) + ''''
SET @SQL = @SQL + ', ''' + convert(varchar, @DataFim, 1) + ' ' + convert(varchar, @DataFim, 8) + ''', 2'
execute(@SQL)
-- *
-- PASSA VARIÁVEL DO PRÓXIMO REGISTRO
FETCH NEXT FROM RELATORIOS INTO @VAR
-- *
END --WHILE
-- *
END --IF
-- *
-----------------------------------------------------------
--FECHANDO O CURSOR
-----------------------------------------------------------
CLOSE RELATORIOS
DEALLOCATE RELATORIOS
-- *
-----------------------------------------------------------
--Verifica se foi selecionado o Tipo de Item (IC, ICL, PC, PV, CCP,OLd)
-----------------------------------------------------------
------------------------------------------------------------------------------
IF @TipoIten = ''
--Mini float,
-- Maxi float,
--Retorna todas as Pesquisas
--"update sua_tabela set seu_campo_novo = seu_campo_antigo"
--update #Retorno set Maxi = Maximum
SELECT ProductDescription, [Tipo Item], PU_Desc, Description, MetricUnits, LReject, Target, UReject
, COALESCE(Average, '-') as Average, COALESCE(Std_Dev, '-') as Std_Dev
, COALESCE(Minimum, '-') as Minimum, COALESCE(Maximum, '-') as Maximum
, Count, PorcFora, PorcAbaixo, PorcAcima, Farol ,cpk
FROM #Retorno
WHERE ([Tipo Item] = 'ICL' OR [Tipo Item] = 'IC' OR [Tipo Item] = 'PC' OR [Tipo Item] = 'PV' OR [Tipo Item] = 'CCP' OR [Tipo Item] = 'OLD')
ELSE
--Retorna a Pesquisas de acordo com o Tipo de Item
SELECT ProductDescription, [Tipo Item], PU_Desc, Description, MetricUnits, LReject, Target, UReject
, COALESCE(Average, '-') as Average, COALESCE(Std_Dev, '-') as Std_Dev
, COALESCE(Minimum, '-') as Minimum, COALESCE(Maximum, '-') as Maximum
, Count, PorcFora, PorcAbaixo, PorcAcima, Farol ,cpk
FROM #Retorno
WHERE [Tipo Item] = @TipoIten
---- *
select * from #Retorno
Drop Table #Retorno
-- *
END
Preciso fazer cálculos com os campos,sendo que são do tipo varchar. E na conversão de varchar para float não esta permitindo.
Alguém pode dar uma dica sobre
Carregando comentários...