Как сделать мой пакет успешным с тремя функциями внутри при вызове пакета показывает две ошибки - PullRequest
0 голосов
/ 01 мая 2019

Это весь код.Пожалуйста, помогите мне устранить ошибки и успешно скомпилировать

CREATE OR REPLACE PACKAGE UPDATE_PASS AS
    FUNCTION updatePasswordStudent(
    CurrentP VARCHAR2,
    NewPwd VARCHAR2,
    StudentId NUMBER
    )

  RETURN number
is
    getCount number :=0;  //this line have error


        BEGIN
            Select count(*) into GetCount from users where student_id=StudentId and Password=md5(CurrentP);
            if GetCount = 1
            then 
            update users set Password=md5(NewPwd) where student_id=StudentId and Password=md5(CurrentP);
          insert into users_log(Passwords,student_id,updated_by,action) values(md5(CurrentP),StudentId,StudentId,'Change');
            else
            GetCount := 0;
            end if;
        RETURN GetCount;
        END updatePasswordStudent;

//this line causes an error
    FUNCTION updatePasswordNazim(
    CurrentP VARCHAR2,
    NewPwd VARCHAR2,
    NazimId number)
    RETURN number
        IS
            GetCount number :=0;

          BEGIN
            Select count(*) into GetCount from nazim_login where nazim_id=NazimId and Password=md5(CurrentP);
            if GetCount = 1
            then 
            update nazim_login set Password=md5(NewPwd) where nazim_id=NazimId and Password=md5(CurrentP);
          insert into nazim_password_log(Passwords,nazim_id,updated_by,action) values(md5(CurrentP),NazimId,NazimId,'Change');
            else
            GetCount := 0;
            end if;
        RETURN GetCount;
        END updatePasswordNazim;

    FUNCTION updatePasswordTeacher(
    CurrentP VARCHAR2,
    NewPwd VARCHAR2,
    TeacherId number)
    RETURN number
        IS
            GetCount number :=0;

          BEGIN
            Select count(*) into GetCount from teacher_login where teacher_id=TeacherId and Password=md5(CurrentP);
            if GetCount = 1
            then 
            update teacher_login set Password=md5(NewPwd) where teacher_id=TeacherId and Password=md5(CurrentP);
          insert into teacher_password_log(Passwords,teacher_id,updated_by,action) values(md5(CurrentP),TeacherId,TeacherId,'Change');
            else
            GetCount := 0;
            end if;
        RETURN GetCount;
        END updatePasswordTeacher;
    END UPDATE_PASS;

Я пытался с несколькими процедурами, но ошибка остается той же

CREATE OR REPLACE PACKAGE UPDATE_PASS AS
    FUNCTION updatePasswordStudent(
    CurrentP VARCHAR2,
    NewPwd VARCHAR2,
    StudentId NUMBER
    )

  RETURN number
is
    getCount number :=0;  //this line have error


        BEGIN
            Select count(*) into GetCount from users where student_id=StudentId and Password=md5(CurrentP);
            if GetCount = 1
            then 
            update users set Password=md5(NewPwd) where student_id=StudentId and Password=md5(CurrentP);
          insert into users_log(Passwords,student_id,updated_by,action) values(md5(CurrentP),StudentId,StudentId,'Change');
            else
            GetCount := 0;
            end if;
        RETURN GetCount;
        END updatePasswordStudent;

//this line causes an error
    FUNCTION updatePasswordNazim(
    CurrentP VARCHAR2,
    NewPwd VARCHAR2,
    NazimId number)
    RETURN number
        IS
            GetCount number :=0;

          BEGIN
            Select count(*) into GetCount from nazim_login where nazim_id=NazimId and Password=md5(CurrentP);
            if GetCount = 1
            then 
            update nazim_login set Password=md5(NewPwd) where nazim_id=NazimId and Password=md5(CurrentP);
          insert into nazim_password_log(Passwords,nazim_id,updated_by,action) values(md5(CurrentP),NazimId,NazimId,'Change');
            else
            GetCount := 0;
            end if;
        RETURN GetCount;
        END updatePasswordNazim;

Я хочу, чтобы пакет успешно скомпилирован

Изображение ошибки

1 Ответ

1 голос
/ 01 мая 2019

Пакет состоит из двух частей: спецификации пакета и тела пакета.Вы пытаетесь объединить два.

Попробуйте что-то вроде этого:

create or replace package update_pass
is
  function updatepasswordstudent
       ( currentp  varchar2
       , newpwd    varchar2
       , studentid number
       )
  return number;
end update_pass;
/

create or replace package body update_pass
as
  function updatepasswordstudent
       ( currentp  varchar2
       , newpwd    varchar2
       , studentid number
       )
  return number
  is
    getcount number := 0;
  begin
    -- logic goes here
    return getcount;
  end updatepasswordstudent;
end update_pass;
/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...