GARANTIR DESCONTO

Fórum EXECUTE statement Com FOR e Nome de Tabela como Variável #557280

17/06/2016

0

Boa Tarde Pessoal!

Tenho a seguinte Procedure:

SET TERM ^ ;

RECREATE PROCEDURE AJUSTA_DESCRICAO_PRODUTOS (
NOME_DA_TABELA VARCHAR(20))
AS
DECLARE PDESC VARCHAR(150);
DECLARE ME15 VARCHAR(10);
DECLARE MP VARCHAR(10);
DECLARE PCOD INTEGER;
DECLARE SQLSCRIPT VARCHAR(1000);
BEGIN
ME15 = :NOME_DA_TABELA ||'_E15';
MP = :NOME_DA_TABELA || '_P';

SQLSCRIPT = '
FOR SELECT DISTINCT COD FROM (
SELECT DISTINCT TRIM(CODIGO_PRODUTO_SERVICO) AS COD , TRIM(DESCRICAO) AS DESCRICAO
FROM '|| ME15 ||'
WHERE NOT EXISTS (SELECT COD FROM '|| MP ||'
WHERE COD=TRIM(CODIGO_PRODUTO_SERVICO))
GROUP BY COD,DESCRICAO) GROUP BY COD HAVING COUNT(*) > 1
INTO :PCOD
DO BEGIN

SELECT FIRST 1 DESCRICAO
FROM '|| ME15 ||'
WHERE CODIGO_PRODUTO_SERVICO = :PCOD
ORDER BY DATA_MOVIMENTO DESC INTO :PDESC;

UPDATE '|| ME15 ||'
SET DESCRICAO = :PDESC
WHERE DESCRICAO <> :PDESC AND CODIGO_PRODUTO_SERVICO = :PCOD;';

EXECUTE statement :SQLSCRIPT;

END^

SET TERM ; ^

Estou tendo problemas ao executar esta statement com o FOR dentro dela, o erro é o seguinte:

Engine Error (code = 335544569):
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 2, column 2.
FOR.

SQL Error (code = -104):
Invalid token.


Já tentei atribuir o nome da tabela de diversas formas sem ter que precisar usar o statement mas sem sucesso.

Alguém tem alguma sugestão ?
Renato Ribeiro

Renato Ribeiro

Responder

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

Aceitar