- Este tópico contém 2 respostas, 3 vozes e foi atualizado pela última vez 12 anos, 2 meses atrás por Fábio Prado.
-
AutorPosts
-
6 de setembro de 2012 às 6:46 am #104383Junior TordoyaParticipante
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.CODPROHaving 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;6 de setembro de 2012 às 4:28 pm #104385rmanParticipante@junior.tordoya
Creio que a parte de sinônimo está correto, o que falta é permissão de SELECT nas tabelas.
6 de setembro de 2012 às 10:17 pm #104388Fábio PradoParticipantejunior.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 -
AutorPosts
- Você deve fazer login para responder a este tópico.