首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于职务类别的插入触发器

基于职务类别的插入触发器
EN

Stack Overflow用户
提问于 2021-06-15 08:51:44
回答 1查看 46关注 0票数 1

你好,我正在尝试创建一个触发器,它应该根据所有注册用户的工作类别(医疗/其他)将用户总数检索为两个参数,因此我开发了:

代码语言:javascript
复制
    CREATE OR REPLACE TRIGGER count_before_insert
    BEFORE INSERT
    ON REGISTRATION_FORM
    FOR EACH ROW

    DECLARE
    p_current_doctor_number varchar2(20);
    p_current_other_number varchar2(20);
    p_ann_id number;

   BEGIN

-- Count the existing trainees based on medical job category
SELECT COUNT(*) FROM REGISTRATION_FORM INTO p_current_doctor_number
WHERE JOB_CATEGORY = 'Medic'
AND ANNOUCMENT_ID = p_ann_id;

 -- Count the existing trainees based on other job category
 SELECT COUNT(*) FROM TRN_LS_REGISTRATION_FORM INTO p_current_other_number
 WHERE JOB_CATEGORY != 'Medic'
 AND ANNOUCMENT_ID = p_ann_id;

但我收到了以下错误:

代码语言:javascript
复制
 Trigger COUNT_BEFORE_INSERT compiled

 LINE/COL  ERROR
--------- -------------------------------------------------------------
9/4       PL/SQL: SQL Statement ignored
9/50      PL/SQL: ORA-00933: SQL command not properly ended
14/4      PL/SQL: SQL Statement ignored
14/50     PL/SQL: ORA-00933: SQL command not properly ended
Errors: check compiler log
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-15 09:17:05

这是SELECT - INTO - FROM,而不是SELECT - FROM - INTO

代码语言:javascript
复制
CREATE OR REPLACE TRIGGER count_before_insert
   BEFORE INSERT
   ON REGISTRATION_FORM
   FOR EACH ROW

DECLARE
   p_current_doctor_number  VARCHAR2 (20);
   p_current_other_number   VARCHAR2 (20);
   p_ann_id                 NUMBER;
BEGIN
   -- Count the existing trainees based on medical job category
   SELECT COUNT (*)
     INTO p_current_doctor_number
     FROM REGISTRATION_FORM
    WHERE     JOB_CATEGORY = 'Medic'
          AND ANNOUCMENT_ID = p_ann_id;

   -- Count the existing trainees based on other job category
   SELECT COUNT (*)
     INTO p_current_other_number
     FROM TRN_LS_REGISTRATION_FORM
    WHERE     JOB_CATEGORY != 'Medic'
          AND ANNOUCMENT_ID = p_ann_id;
END;

现在,扳机并没有做什么聪明的事情,所以我想你会在这里做更多的事情。

注意表错误的变异(不能从正在被修改的表中选择数据)。

此外,p_ann_id是一个局部变量,当前为NULL,因此这些选择不会返回任何内容。也许你是想用

代码语言:javascript
复制
... and ANNOUCMENT_ID = :new.ANNOUCMENT_ID
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67983033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档