Pular para o conteúdo
  • Este tópico contém 2 respostas, 3 vozes e foi atualizado pela última vez 12 anos, 2 meses atrás por Avatar de Fábio PradoFábio Prado.
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #104383
    Avatar de Junior TordoyaJunior Tordoya
    Participante

      Prezados,

      Criei um cursor com dados de tabelas de 2 schemas ” A e B ” diferentes, estou criando no schema “A” a procedure e criei também sinônimos das tabelas do schema “B”, porem não consigo compilar, pois o pl mostra “erro de tabela inexistente”.
      Para verificar se o sinônimo esta correto, executei um select no schema “A” e o mesmo trouxe as informações sem apresentar nenhum erro.

      Como posso executar um cursor numa store procedure de tabelas de schemas diferente???

      estou acessando o schema teste 1, onde todas as tabelas pertencem a este esquema, menos a XMPRODUTO E XMDERIVACAO(sinonimos)

      create or replace procedure SP_VENDA_COTACAO IS

      CURSOR venda_quinze IS

      SELECT LKP.CODIGOPRODUTO,
      LKP.CLASSEPRODUTO,
      LKP.TIPOUC,
      LKP.FATORTIPOUC,
      SUM(LKP.QUANTIDADEATUAL) AS QUANTIDADEATUAL,
      SUM(LKP.QUANTIDADEATUAL / LKP.FATORTIPOUC) AS QUANTIDADEATUALFATOR,
      SUM(LKP.QUANTIDADEBLOQUEADO) AS QUANTIDADEBLOQUEADO,
      SUM(LKP.QUANTIDADEBLOQUEADO / LKP.FATORTIPOUC) AS QUANTIDADEBLOQUEADOFATOR,
      SUM(LKP.QUANTIDADEEMPENHADO) AS QUANTIDADEEMPENHADO,
      LKP.CODIGOMATRIZ AS CODIGODEPOS,
      SUM(LKP.QUANTIDADEEMPENHADO / LKP.FATORTIPOUC) AS QUANTIDADEEMPENHADOFATOR,
      SUM(LKP.QUANTIDADERESERVA) AS QUANTIDADERESERVA,
      SUM(LKP.QUANTIDADEATUAL + LKP.QUANTIDADEBLOQUEADO +
      LKP.QUANTIDADEEMPENHADO) AS TOTAL,
      NVL(SUM(LKP.QUANTIDADEATUAL), 0) –
      NVL(SUM(LKP.QUANTIDADERESERVA), 0) AS QTD_DISPONIVEL_ESTOQUE,
      XMDERIVACAO.PREMED AS PRECO_MEDIO,
      TO_CHAR(SYSDATE,’DD/MM/YYYY’) AS data_a,
      XMDERIVACAO.DESDER,
      XMPRODUTO.CODPRO,
      XMPRODUTO.DESPRO,
      XMPRODUTO.UNIMED
      FROM (SELECT LE.CODIGOPRODUTO,
      LES.CLASSEPRODUTO,
      LES.TIPOUC,
      LES.FATORTIPOUC,
      LES.QUANTIDADEATUAL,
      LES.QUANTIDADEBLOQUEADO,
      LES.QUANTIDADEEMPENHADO,
      LE.CODIGOMATRIZ,
      NVL((SELECT SUM(RES.QUANTIDADERESERVA)
      FROM ENDERECORESERVA RES, COLETORMENSAGEM COL
      Where RES.CODIGOESTABELECIMENTO =
      LES.CODIGOESTABELECIMENTO
      And RES.LOTEENTRADA = LES.LOTEENTRADA
      AND RES.LOTEENTRADASEQUENCIA =
      LES.LOTEENTRADASEQUENCIA
      AND RES.TIPORESERVA = 2
      AND RES.QUANTIDADERESERVA > 0
      AND RES.CODIGOESTABELECIMENTO =
      COL.CODIGOESTABELECIMENTO
      AND RES.CODIGOMENSAGEM = COL.CODIGOMENSAGEM
      AND COL.CODIGOTAREFA <> 170),
      0) QUANTIDADERESERVA
      FROM LOTEENTRADA LE, LOTEENTRADASEQUENCIA LES
      WHERE LE.CODIGOESTABELECIMENTO = LES.CODIGOESTABELECIMENTO
      AND LE.LOTEENTRADA = LES.LOTEENTRADA
      AND LE.CODIGOESTABELECIMENTO = 1
      –AND (LE.CODIGOMATRIZ = ’11’)
      AND LES.CLASSEPRODUTO = ‘OK’) LKP
      LEFT JOIN XMDERIVACAO
      ON Decode(INSTR(LKP.CODIGOPRODUTO, ‘.’),
      0,
      NULL,
      Substr(LKP.CODIGOPRODUTO,
      INSTR(LKP.CODIGOPRODUTO, ‘.’) –
      LENGTH(LKP.CODIGOPRODUTO),
      4)) = XMDERIVACAO.CODDER
      AND Decode(INSTR(LKP.CODIGOPRODUTO, ‘.’),
      0,
      LKP.CODIGOPRODUTO,
      Substr(LKP.CODIGOPRODUTO,
      1,
      INSTR(LKP.CODIGOPRODUTO, ‘.’) – 1)) =
      DER.CODPRO
      LEFT JOIN XMPRODUTO
      ON Decode(INSTR(LKP.CODIGOPRODUTO, ‘.’),
      0,
      LKP.CODIGOPRODUTO,
      Substr(LKP.CODIGOPRODUTO,
      1,
      INSTR(LKP.CODIGOPRODUTO, ‘.’) – 1)) =
      XMPRODUTO.CODPRO

      Having SUM(LKP.QUANTIDADEATUAL + LKP.QUANTIDADEBLOQUEADO + LKP.QUANTIDADEEMPENHADO) > 0

      GROUP BY LKP.CODIGOPRODUTO, LKP.CLASSEPRODUTO, LKP.TIPOUC, LKP.FATORTIPOUC,XMDERIVACAO.PREMED,
      XMDERIVACAO.DESDER,XMPRODUTO.CODPRO,XMPRODUTO.DESPRO,XMPRODUTO.UNIMED,LKP.CODIGOMATRIZ;

      venda_1 venda_quinze%ROWTYPE;

      BEGIN
      …….

      foi criado os sinominos:

      create or replace synonym XMPRODUTO
      for teste2.produto;

      create or replace synonym XMDERIVACAO
      for teste2.derivacao;

      #104385
      Avatar de rmanrman
      Participante

        @junior.tordoya

        Creio que a parte de sinônimo está correto, o que falta é permissão de SELECT nas tabelas.

        #104388
        Avatar de Fábio PradoFábio Prado
        Participante

          junior.tordoya,

          Para compilar a procedure é necessário que o usuário do schema A tenha privilégios diretos de acesso aos objetos do schema B. Se os privilégios foram concedidos através de “roles” a compilação não funciona, vc terá que dar os privilégios diretamente o usuário, ok? Veja se não é este o seu problema e me dê um feedback.

          []s

          Fábio Prado
          http://www.fabioprado.net

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.
        plugins premium WordPress