SQL只添加两列具有相同数据的列

时间:2016-12-14 17:05:18

标签: oracle plsql

我需要在列中添加管理员和日期,但每年只能有两名管理员,我该怎么做? 我有这个:

PROCEDURE regista_administrador (
    proprietario_in         IN administra.proprietario%TYPE,
    ano_in          IN administra.ano%TYPE)
  IS
  BEGIN
    SELECT ano INTO ano_in FROM administra WHERE (ano = ano_in);

    IF (SQL%ROWCOUNT = 0) THEN
      RAISE_APPLICATION_ERROR(-20003,   -- Código definido pelo programador.
                              'Já existem dois administradores nesse ano.');
    ELSE
      INSERT INTO administra(proprietario, ano)
           VALUES (proprietario_in, ano_in);
    END IF;
   EXCEPTION
    WHEN OTHERS THEN RAISE;
  END regista_administrador;

2 个答案:

答案 0 :(得分:0)

为什么选择输入参数?

SELECT ano INTO ano_in FROM administra WHERE (ano = ano_in);

你需要另一个变量来SELECT COUNT然后检查它:

 SELECT count(1) INTO ano_cnt FROM administra WHERE (ano = ano_in);

IF (ano_cnt = 2) THEN
  RAISE_APPLICATION_ERROR(-20003,   -- Código definido pelo programador.
                          'Já existem dois administradores nesse ano.');

答案 1 :(得分:0)

如果您希望每年只有2个注册管理员更改此条件:

IF (SQL%ROWCOUNT = 0) THEN

 IF (SQL%ROWCOUNT > 1) THEN

提出错误

为什么要进行此查询?

SELECT ano INTO ano_in FROM administra WHERE (ano = ano_in);

我认为正确的查询是:

SELECT count(ano) FROM administra WHERE (ano = ano_in);