Oracle PL/SQL流程:措辞问题
我正在尝试在Oracle APEX 4.1中创建一个页面进程。具体地说,当这个页面上的一个按钮正在提交页面时,我希望这个PL/SQL查询能够工作。我对PL/SQL没有太多的了解,我想知道如何解决这个问题 我希望查询执行的操作: 我希望这个页面进程循环遍历APEX数据库中EMPLOYEE表中的每一行。对于每一行,我想将用户名、组和密码移动到它们自己的变量中,然后使用APEX\u UTIL\u create\u user进程创建一个APEX用户。我想让表中的每个员工都这样做 我不知道这个PL/SQL到底出了什么问题,因为我以前从未使用过它。我非常感谢任何人能在这方面给我的帮助。我将在下面显示查询和错误消息 PL/SQL查询:Oracle PL/SQL流程:措辞问题,oracle,stored-procedures,plsql,oracle-apex,Oracle,Stored Procedures,Plsql,Oracle Apex,我正在尝试在Oracle APEX 4.1中创建一个页面进程。具体地说,当这个页面上的一个按钮正在提交页面时,我希望这个PL/SQL查询能够工作。我对PL/SQL没有太多的了解,我想知道如何解决这个问题 我希望查询执行的操作: 我希望这个页面进程循环遍历APEX数据库中EMPLOYEE表中的每一行。对于每一行,我想将用户名、组和密码移动到它们自己的变量中,然后使用APEX\u UTIL\u create\u user进程创建一个APEX用户。我想让表中的每个员工都这样做 我不知道这个PL/SQL
PROCEDURE deploy_employee
(EMP_USERNAME IN EMPLOYEE)
IS
BEGIN
FOR indx IN NVL (EMP_USERNAME.FIRST, 0)
.. NVL (EMP_USERNAME.LAST, -1)
LOOP
emp_user EMPLOYEE.EMP_USERNAME%TYPE;
emp_pass EMPLOYEE.EMP_PASSWORD%TYPE;
emp_group EMPLOYEE.EMP_GROUP%TYPE;
BEGIN
BEGIN
select EMP_USERNAME into emp_user from EMPLOYEE;
select EMP_PASSWORD into emp_pass from EMPLOYEE;
select EMP_GROUP into emp_group FROM EMPLOYEE;
EXCEPTION
WHEN NO_DATA_FOUND THEN
emp_user := NULL;
emp_pass := NULL;
emp_group := NUL;
END;
APEX_UTIL.CREATE_USER(
p_user_name => emp_user,
p_web_password => emp_pass,
p_user_group => emp_gorup,
);
END;
END LOOP;
END deploy_employee;
错误消息:
发生1错误ORA-06550:第2行第1列:PLS-00103:
在预期出现以下情况之一时遇到符号“过程”
以下内容:(begin case为goto if循环声明end异常退出
mod null pragma raise return select update with with with with with
您的程序存在多个问题
您缺少CREATE关键字,这是编译时错误的根本原因。PLS-00103
有关创建独立存储过程或调用规范的详细信息,请参阅文档
雇员中的EMP_用户名
IN参数的数据类型声明不正确。您需要按照以下步骤执行:
现在,让我们测试一下,看看:
SQL> set serveroutput on
SQL> EXEC deploy_emp(7369);
SMITH
PL/SQL procedure successfully completed.
SQL>
使用CREATE PROCEDURE
创建新的存储过程,或使用EXEC
执行它如果在页面进程中不执行所有这些操作,则不需要创建过程。将此代码放入页面进程的源代码中:
BEGIN
FOR indx IN (
select *
from EMPLOYEE
) LOOP
APEX_UTIL.CREATE_USER(
p_user_name => indx.EMP_USERNAME,
p_web_password => indx.EMP_PASSWORD,
p_user_group => indx.EMP_GROUP,
);
END LOOP;
END;
非常感谢,我错了!
SQL> CREATE OR REPLACE
2 PROCEDURE deploy_emp(
3 i_emp emp.empno%type)
4 IS
5 emp_user VARCHAR2(50);
6 BEGIN
7 FOR indx IN
8 (SELECT ename FROM emp
9 )
10 LOOP
11 BEGIN
12 BEGIN
13 SELECT ename INTO emp_user FROM emp WHERE empno = i_emp;
14 EXCEPTION
15 WHEN NO_DATA_FOUND THEN
16 emp_user := NULL;
17 END;
18 END;
19 END LOOP;
20 dbms_output.put_line(emp_user);
21 END deploy_emp;
22 /
Procedure created.
SQL> sho err
No errors.
SQL> set serveroutput on
SQL> EXEC deploy_emp(7369);
SMITH
PL/SQL procedure successfully completed.
SQL>
BEGIN
FOR indx IN (
select *
from EMPLOYEE
) LOOP
APEX_UTIL.CREATE_USER(
p_user_name => indx.EMP_USERNAME,
p_web_password => indx.EMP_PASSWORD,
p_user_group => indx.EMP_GROUP,
);
END LOOP;
END;