我需要在列中添加管理员和日期,但每年只能有两名管理员,我该怎么做? 我有这个:
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;
答案 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);