Alguém poderia ajudar com um select no oracle: quando tento executar retorna “ORA-00907: Parentese não encontrado”
SELECT REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
CAST((
SELECT '' TR, TPRODUTO.CODIGOPRD AS TD, TPRODUTO.NOMEFANTASIA AS TD1, TPRODUTODEF.CODUNDCONTROLE AS TD2, SALDOFISICO2 AS TD3, TPRODUTODEF.ESTOQUEMINIMO1 AS TD4, '' AS TF
FROM TPRODUTO
INNER JOIN TPRDLOC ON TPRODUTO.IDPRD = TPRDLOC.IDPRD
INNER JOIN TPRODUTODEF ON TPRODUTO.IDPRD = TPRODUTODEF.IDPRD
WHERE TPRODUTODEF.CODCOLIGADA =1
AND TPRODUTODEF.ESTOQUEMINIMO1 >0
AND TPRODUTO.INATIVO = 0
AND TPRDLOC.SALDOFISICO2 <= TPRODUTODEF.ESTOQUEMINIMO1
FOR XML ('TESTE'), TYPE)
AS VARCHAR(MAX))
, 'tr/', 'TR')
, 'td1', 'td')
, 'td2', 'td')
, 'td3', 'td')
, 'td4', 'td')
, 'TRF/', '/tr') AS TEXTO
Bom dia Lucas, na verdade esse eu coloquei pra testar , o comando original é sem o TESTE. É
FOR XML (’’). Mas retorna o mesmo erro, preciso gerar o xml do retorno da consulta.
Eh que achei estranho o lugar onde esse FOR está. Ele faz parte do CAST?
Veja a consulta indentada:
SELECT
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
REPLACE(
CAST(
(
SELECT
'' TR,
TPRODUTO.CODIGOPRD AS TD,
TPRODUTO.NOMEFANTASIA AS TD1,
TPRODUTODEF.CODUNDCONTROLE AS TD2,
SALDOFISICO2 AS TD3,
TPRODUTODEF.ESTOQUEMINIMO1 AS TD4,
'' AS TF
FROM
TPRODUTO
INNER JOIN TPRDLOC ON TPRODUTO.IDPRD = TPRDLOC.IDPRD
INNER JOIN TPRODUTODEF ON TPRODUTO.IDPRD = TPRODUTODEF.IDPRD
WHERE
TPRODUTODEF.CODCOLIGADA = 1
AND TPRODUTODEF.ESTOQUEMINIMO1 > 0
AND TPRODUTO.INATIVO = 0
AND TPRDLOC.SALDOFISICO2 <= TPRODUTODEF.ESTOQUEMINIMO1
FOR XML ('TESTE'), TYPE
) AS VARCHAR(MAX)
)
, 'tr/', 'TR')
, 'td1', 'td')
, 'td2', 'td')
, 'td3', 'td')
, 'td4', 'td')
, 'TRF/', '/tr') AS TEXTO
Posso não está entendendo a sintaxe corretamente, mas esse FOR XML ('TESTE'), TYPE parece está fora do lugar.