Script SQL

SQL Server

24/07/2006

Olá,

Estou precisando urgente rodar o script abaixo, mas ele está dando erro e não executa corretamente. Se alguém puder me ajudar eu agradeço.
Obrigado

Rogério

Segue o script

CREATE TABLE dados
( ID numeric(10),
DESCRICAO VARCHAR(30),
META numeric(10,2),
SENTENCA VARCHAR(1000),
RESULTADO numeric(10,2)
)

INSERT INTO dados VALUES( 1, ´Meta Fat.Junho´, 10000, ´Select sum(osequant) from oset00´,0);
INSERT INTO dados VALUES( 2, ´CP para 2006´, 1000000, ´Select sum(osetotal) from oset00´,0);

Create Table #Resultados (Resultado Numeric(10,2))

Declare @Start Int
Declare @End Int
Declare @Retorno Numeric(10,2)
Declare @TSql Varchar(1000)
Declare @Loop Table (Idx int identity(1,1), [ID] Numeric(10), Sentenca Varchar(1000))

Insert into @Loop (sentenca, [ID] ) Select Sentenca, [ID] From dados

select @start = 1, @end = Max(idx) from @loop

While @Start <= @End
Begin
Select @TSql = sentenca From @Loop where idx = @Start
exec sp_executesql @TSql, N´@Retorno Numeric(10,2) OUTPUT´, @Retorno OUTPUT
Update Dados Set resultado = @Retorno
From Dados Inner join @Loop Lp On Lp.ID = Dados.ID And Lp.idx = @Start
Set @Start = @Start + 1
End

[color=red:ca9141667f]Resultado:
(1 row(s) affected)
(1 row(s) affected)
(2 row(s) affected)

Server: Msg 214, Level 16, State 2, Procedure sp_executesql, Line 28
Procedure expects parameter ´@statement´ of type ´ntext/nchar/nvarchar´.[/color:ca9141667f]


Rogerpm

Rogerpm

Curtidas 0

Respostas

Psergio.p

Psergio.p

24/07/2006

Caro amigo, na definiçâo da variavel @Tsql você deve colocar como NVARCHAR


GOSTEI 0
Rogerpm

Rogerpm

24/07/2006

Fiz como você disse coloquei o @TSql como NVARCHAR. O script roda, mas não atualiza o dado do campo retorno. O que mais eu poderia estar fazendo de errado? Obrigado


GOSTEI 0
Psergio.p

Psergio.p

24/07/2006

INSERT INTO dados VALUES( 1, ´Meta Fat.Junho´, 10000, ´Select sum(osequant) from oset00´,0);
INSERT INTO dados VALUES( 2, ´CP para 2006´, 1000000, ´Select sum(osetotal) from oset00´,0);


Altere as linhas acima para

INSERT INTO dados VALUES( 1, ´Meta Fat.Junho´, 10000, ´Select @Retorno = sum(osequant) from oset00´,0);
INSERT INTO dados VALUES( 2, ´CP para 2006´, 1000000, ´Select @Retorno = sum(osetotal) from oset00´,0);


GOSTEI 0
POSTAR