CREATE OR REPLACE PROCEDURE TEST
(
NAME IN STUDENT.NAME_STR%TYPE,
OU OUT NUMBER
) AS
CU NUMBER:=0;
CT NUMBER:=0;
BEGIN
  SELECT COUNT(*) INTO CU FROM STUDENT WHERE NAME_STR=TRIM(NAME);
  IF CU=1 THEN
     SELECT COUNT(*) INTO CT FROM COURSE
 WHERE NAME=
              (SELECT SNO STUDENT WHERE NAME_STR=TRIM(NAME));
     IF CT=0 THEN
  OU:=0;
 ELSE
  OU:=1;
 END IF;
  ELSE
  OU:=-1;
  END IF;
END TEST;

解决方案 »

  1.   

    SORRY,以上的NAME改为SNO,
         SELECT COUNT(*) INTO CT FROM COURSE
     WHERE NAME=
                  (SELECT SNO STUDENT WHERE NAME_STR=TRIM(NAME));
      

  2.   


    Oracle中有AFTETR/before触发器CREATE OR REPLACE TRIGGER ECS_SFIS_OQC_SNINFO_ID
            AFTER  INSERT  --改成Before,下列语句才可 
            ON      ECS_SFIS_OQC_SNINFO
            REFERENCING
                    NEW AS NEW
                    OLD AS OLD
            FOR     EACH ROW
    DECLARE
       oqcno    VARCHAR2(16);
       sncount  NUMBER;
    BEGIN
    oqcno:=:new.STROQCNO;
    select count(strsn) into sncount from ecs_sfis_oqc_sninfo where strsn=:new.strsn;
    if sncount=1 then
    update ecs_sfis_oqc_qcnoinfo set numchecked=sncount where stroqcno=oqcno;
    end if;
    end;