Как исправить ошибку процедуры создания хранилища оракулов без публичных участников?

Я пытался создать процедуру в oracle 19c на windows 10. Но процесс не завершился из-за ошибки.

Empty package GETUSERINTOGROUP definition (no public members).

Эта ошибка не только для создания процедуры хранения, но и для другого типа тоже ошибка. Но создать таблицу и создать пользователя в порядке.

Я уже даю привилегию пользователю. Я получил код из Интернета.

  GRANT EXP_FULL_DATABASE TO ?;
  GRANT RESOURCE TO ?;
  GRANT CONNECT TO ?;
  GRANT IMP_FULL_DATABASE TO ?;
  GRANT DBA TO ?;

  GRANT CREATE ANY SYMNONYM TO ?;
  GRANT CREATE TRIGGER TO ?;
  GRANT CREATE ANY TABLE TO ?;
  GRANT CREATE ANY VIEW TO ?;
  GRANT CREATE ANY FUNCTION TO ?;
  GRANT CREATE ANY PACKAGE TO ?;

Пробовал исправить в Интернете по этой ссылке Определение пустого пакета <имя пакета> (нет общедоступных членов)

Я попытался сначала сохранить процедуру, а затем выполнить снова. Ошибка типа:

Project: C:\Users\Username\AppData\Roaming\SQL Developer\system19.2.1.247.2212\o.sqldeveloper\projects\IdeConnections#loginname.jpr
Procedure myschema.GETUSERINTOGROUP@loginname
Error(8,5): PL/SQL: SQL Statement ignored
Error(36,2): PL/SQL: ORA-00933: SQL command not properly ended
Error(37,21): PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:     
               ( begin case declare end exception exit for goto if loop mod    null pragma raise return select update while with    
               <an identifier> <a double-quoted delimited-identifier>    <a bind variable> << continue close current delete fetch lock    
               insert open rollback savepoint set sql execute commit forall    merge pipe purge json_exists json_value json_query    json_object json_array 

Пробовал оба способа создать процедуры магазина.

Первый

Напишите код напрямую. (Таким образом, в диалоговом окне тишина. Но ошибка кода в нижней панели приведена выше)

Второй

Щелкните правой кнопкой мыши ПРОЦЕДУРЫ в левом древовидном меню и следуйте указаниям мастера. (Таким образом выполните показ пустого пакета диалогового окна)

Мой код процедуры здесь:

CREATE OR REPLACE PROCEDURE getuserintogroup (
    empcode     IN   VARCHAR2,
    fcode       IN   VARCHAR2,
    deptcode    IN   VARCHAR2,
    groupcode   IN   VARCHAR2
) AS

BEGIN
SELECT --red underline is here (just comment for post. in code don't have this explain)
    m.mempcode,
    m.username,
    initcap(e.fname)
    || ' '
    || initcap(e.lname) ename
FROM
    muser         m
    INNER JOIN memployee     e ON m.mempcode = e.empcode
    INNER JOIN mdepartment   d ON e.mdeptoid = d.deptcode
    INNER JOIN mcompany      f ON d.mcompanyoid = f.oid
WHERE
    m.statusflag = e.statusflag
    AND m.statusflag = 1
    AND e.empcode = empcode
    AND f.oid = fcode
    AND d.deptcode = deptcode
    AND m.mempcode NOT IN (
        SELECT
            u.mempcode
        FROM
            dgroupmember   g
            INNER JOIN muser          u ON g.museroid = u.oid
            INNER JOIN memployee      em ON em.empcode = u.mempcode
        WHERE
            em.statusflag = 1
            AND g.musergroupoid = groupcode
    );

 END getuserintogroup;

Я никогда не использовал PL/SQL в Oracle. Я пробовал что-то вроде SQL Server, и я также ищу в Интернете Oracle PL/SQL, чтобы сделать это.

Я не уверен, что правильно делаю этот код или нет.

Если вам нравится SQL Server, я назову эту процедуру хранения как

   String sql="getuserintogroup ?,?,?,?";

Пожалуйста, поделитесь со мной

0 ответов

Другие вопросы по тегам