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 ?
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)