Alterar campos de uma tabela

0 respostas
V

OLa,

Estou tentando fazer uma funçao no POSTGRESQL para alterar os valores de uma coluna da tabela, mas gostaria de usar um cursor para aprender a lidar com eles.

Tenho uma tabela de empregados que tem como pk empno e uma fk (na mesma tabela emp) é mgr.

Gostaria de alterar os valores da coluna mgr e para isso comecei a fazer a funçao. Alguém me ajuda?

CREATE TABLE emp
(
  empno int4 NOT NULL,
  ename varchar(30) NOT NULL,
  job varchar(30) NOT NULL,
  deptno int4 NOT NULL,
  mgr int4);

ALTER TABLE emp
  ADD CONSTRAINT "PKemp" PRIMARY KEY(empno);

----------------------------------------------
empno | ename | job | deptno | mgr |
-------+---------+-----------+--------+------+
7839 | KING | P | 10 | |
7698 | BLAKE | M | 30 | 7839 |
7900 | JAMES | CL | 30 | 7698 |
7990 | JOHNSON | S | 30 | 7698 |
7654 | MARTIN | S | 30 | 7698 |
7844 | TURNER | S | 30 | 7900 |

Gostaria de quando solicitar para alterar o diretor (coluna mgr) 7698 para 7900 ... alterar todos os valores 7698 para 7900.

CREATE OR REPLACE FUNCTION mudar_diretor(diretor_novo IN INTEGER , diretor_velho IN INTEGER)
RETURNS VOID 
AS $$

DECLARE

modificar CURSOR IS SELECT * FROM emp WHERE mgr = diretor_velho;

BEGIN

UPDATE emp
SET mgr=diretor_novo;

END;
$$ LANGUAGE 'plpgsql';

OBRIGADA,
veronica

Criado 6 de abril de 2013
Respostas 0
Participantes 1