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