Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Amigos, bom dia!
Eu estou tentando aprender sobre cursores para Oracle, o que eu preciso é o seguinte:
Eu tenho 2 BASES e preciso atualizar campo OBS da Base CERT_SET09 que possuem o desc_tipo_comissao = 'casas' seja atualizado com o OBS da base SMART.
Alguém pode me dar uma luz?
OBRIGADOO
DECLARE
CURSOR C
IS
SELECT * FROM SMART;
REC C%ROWTYPE; OPEN C;
LOOP
FETCH C INTO REC;
EXIT WHEN C%NOTFOUND;
UPDATE CERT_SET09
SET OBS = REC.OBS
WHERE ID_DETSUBS = REC.ID_DETSUBS AND
DESC_TIPO_COMISSAO = 'CASAS';
END LOOP;
CLOSE C;
END;Error at line 2
ORA-06550: linha 16, coluna 23:
PLS-00302: component 'OBS' must be declared
ORA-06550: linha 16, coluna 19:
PL/SQL: ORA-00904: "REC"."OBS": identificador inválido
ORA-06550: linha 15, coluna 6:
PL/SQL: SQL Statement ignored
Mota, eu queria fazer um cursor porque a tabela CERT_SET09 tem mais de 1 milhão de registros.
Eu tentei assim, mais nao funciona...se tiver uma outra luz eu agradeço.
UPDATE CERT_SET09 X
SET X.OBS = (
SELECT NOME
FROM SMART
WHERE SMART.ID = X.ID AND
X.DESC_TIPO_COMISSAO = 'CASAS'
)A tabela SMART tem uma coluna OBS ?!
nao
pelo que entendi troque
SET OBS = REC.OBS
por
SET OBS = REC.nome
Parece certo, qual o problema ?