Plsql 关于apex程序的形式

Plsql 关于apex程序的形式,plsql,oracle-apex,Plsql,Oracle Apex,我想在APEX的程序上创建表单 这是我的密码 create or replace procedure "RESERVER2" (numo_place in number,CATGE IN varchar,NOM_EQUIP1 IN VARCHAR2,NOM_EQUIP2 IN VARCHAR) is V_MAX CLIENT1.MAXIMUM%TYPE; V_MIN CLIENT1.MINIMUM%TYPE; V_CATG CLIENT1.CATG%TYPE; V_NO

我想在APEX的程序上创建表单 这是我的密码

create or replace procedure "RESERVER2"
  (numo_place in number,CATGE IN varchar,NOM_EQUIP1 IN VARCHAR2,NOM_EQUIP2 IN VARCHAR)
  is

  V_MAX CLIENT1.MAXIMUM%TYPE;
  V_MIN CLIENT1.MINIMUM%TYPE;
  V_CATG CLIENT1.CATG%TYPE;
  V_NOM_EQUIPE1 CLIENT.NOM_EQUIPE1%TYPE;
  V_NOM_EQUIPE2 CLIENT.NOM_EQUIPE2%TYPE;
  V_num  reservation.num_place%type;

  CURSOR C1 IS 
    select CATG,NOM_EQUIPE1,NOM_EQUIPE2 from client1;

begin 

  open C1;

  LOOP 

    FETCH C1 into V_CATG,V_NOM_EQUIPE1,V_NOM_EQUIPE2;

    EXIT WHEN C1%notfound;

    select CATG into V_CATG from CLIENT1;

    if CATGE=V_CATG THEN

      INSERT INTO RESERVATION(CATEG)values(CATGE); 

      select NOM_EQUIPE1 into V_NOM_EQUIPE1 from CLIENT1;

      if NOM_EQUIP1=V_NOM_EQUIPE1 THEN

        INSERT INTO RESERVATION(NOM_MATCH)values(NOM_EQUIP1);

        if CATGE='A'AND numo_place<20 then

          select NOM_EQUIPE2 into V_NOM_EQUIPE2 from CLIENT1;

          if NOM_EQUIP2=V_NOM_EQUIPE2 THEN

            INSERT INTO RESERVATION(NOM_MATCH2)values(NOM_EQUIP2);

            if CATGE='A'AND numo_place<20 then
              INSERT INTO RESERVATION(NUM_PLACE) values(numo_place);
            else
              DBMS_OUTPUT.PUT_LINE('ERREUR');
            end if;

          end if;

        end if;

      end if;

    end if;

  end loop;

  close C1;

end;
创建或替换过程“RESERVER2”
(数字中的numo_位置,varchar中的CATGE,VARCHAR2中的NOM_设备1,varchar中的NOM_设备2)
是
V_MAX CLIENT1.最大%类型;
V_MIN客户端1.最小%类型;
V_CATG客户端1.CATG%类型;
V_NOM_EQUIPE1客户端。NOM_EQUIPE1%类型;
V_NOM_EQUIPE2客户端。NOM_EQUIPE2%类型;
V_num reservation.num_place%类型;
光标C1为
从客户端1中选择CATG、NOM_设备1、NOM_设备2;
开始
开C1;
环
将C1接入V_CATG、V_NOM_设备1、V_NOM_设备2;
未找到C1%时退出;
从客户端1选择CATG到V_CATG;
如果CATGE=V_CATG,则
插入保留(CATEG)值(CATGE);
从CLIENT1中选择NOM_EQUIPE1进入V_NOM_EQUIPE1;
如果标称设备1=标称设备1,则
在保留中插入(名称匹配)值(名称1);

如果CATGE='A'和numo_place您的
SELECT
语句中有一条返回多条记录,则您正试图将返回值赋给一个变量,如果SELECT返回多条记录,则会抛出此错误。我想从表client1中选择,(此表中存在如此多的行)然后,您需要限制使用
WHERE
子句返回的行,或者将行返回到集合中;那么,为什么要在同一个表上再次执行所有这些查询?在我看来,您实际上应该在对
client1
的初始查询中使用过程参数(例如
CATGE
)作为谓词,不是查询表中的所有行,然后比较循环中的值。您的
SELECT
语句之一返回多条记录,而是尝试将返回值赋给变量,如果SELECT返回多条记录,则会引发此错误。我想从表client1中选择,(在这个表中存在如此多的行)然后您需要限制使用
WHERE
子句返回的行,或者将行返回到集合中。您的主循环查询
client1
表;那么为什么要再次对同一个表执行所有这些查询?在我看来,您实际上应该使用过程参数(例如,
CATGE
)在对
client1
的初始查询中作为谓词,而不是查询表中的所有行,然后比较循环中的值。