Script SQL

24/07/2006

0

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

Responder

Posts

25/07/2006

Psergio.p

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


Responder

Gostei + 0

25/07/2006

Rogerpm

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


Responder

Gostei + 0

25/07/2006

Psergio.p

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);


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar