Ir para conteúdo

POWERED BY:

Arquivado

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

mstecinfo

Procedure Tabela temporária + convert

Recommended Posts

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


Compartilhar este post


Link para o post
Compartilhar em outros sites

O erro é na conversão de varchar para float.

 

------------------------------------------------------------

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')
na verdade a ideia é fazer um convert no select.A versão é sql 2005

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.