CRIANDO um @Table – Cannot access temporary tables from within a function.

Se você vai fazer uma função, vai se deparar com o problema de não poder acessar uma tabela temporária de dentro da sua função, para isso será necessário utilizar o tipo table, como no exemplo abaixo:

O erro: “Cannot access temporary tables from within a function.”

 

DECLARE @TibetanYaks TABLE (
YakID int,
YakName char(30) )

INSERT INTO @TibetanYaks (YakID, YakName)
SELECT 	YakID, YakName
FROM 	dbo.Yaks
WHERE 	YakType = 'Tibetan'

-- Do some stuff with the table

Mais detalhes >>>>>>

Trabalhando com a tabela:

DECLARE @TibetanYaks TABLE (
YakID int,
YakName char(30) )

INSERT INTO @TibetanYaks (YakID, YakName)
SELECT 	YakID, YakName
FROM 	dbo.Yaks
WHERE 	YakType = 'Tibetan'

UPDATE 	@TibetanYaks
SET 	YakName = UPPER(YakName)

SELECT *
FROM @TibetanYaks

 

Criando a @table:

Ao invés de criar uma tabela temporária:

create table #TempFees
(
DealCompPriceID int,
DealCompID int,
Tier tinyint,
FeeName varchar(50),
FeeType varchar(50),
Vol int,
estprice decimal(18,6),
FeeTypeID int,
rate decimal(18,6),
tierActual int,
ActualPrice decimal(18,6),
pct decimal(18,6)
)

Utilize isto:

declare @TempFees table
(
 DealCompPriceID int,
 DealCompID int,
 Tier tinyint,
 FeeName varchar(50),
 FeeType varchar(50),
 Vol int,
 estprice decimal(18,6),
 FeeTypeID int,
 rate decimal(18,6),
 tierActual int,
 ActualPrice decimal(18,6),
 pct decimal(18,6)
)

 

 

No comments yet.