Как исправить ошибку процедуры создания хранилища оракулов без публичных участников?
Я пытался создать процедуру в 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 ?,?,?,?";
Пожалуйста, поделитесь со мной