Array
(
)

Script SQL

Rogerpm
   - 24 jul 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

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´.

Psergio.p
   - 25 jul 2006

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

Rogerpm
   - 25 jul 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

Psergio.p
   - 25 jul 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);