Как исправить ошибку при создании oracle Store no publi c members? - PullRequest
0 голосов
/ 18 апреля 2020

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

Empty package GETUSERINTOGROUP definition (no public members).

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

Я предоставляю привилегию пользователю уже. Я получил код от inte rnet.

  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 ?;

Попробовал исправить с помощью онлайн по этой ссылке Пустой пакет определение (нет публикуемых c членов)

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

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 

Пробовал оба способа создания процедур хранения.

Первый

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

Второй

Righ-Click на ПРОЦЕДУРАХ в левом древовидном меню и следуйте указаниям мастера. (Таким образом, выполните показ диалогового окна пустого пакета)

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

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, и я также смотрю на inte rnet для oracle PL / SQL, чтобы сделать это.

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...