我正在使用Oracle APEX 22.1,我有一些表,如TBLCASE
,TBLCASE_CLASSES
,...。.它们都具有列ISDELETED
、DELETE_TIME
、DELETE_USER
和DELETE_NOTE
。我想要的是:
当用户在任何报告页面中单击删除时,会显示一个对话框页面,在此对话框中,我希望为每个表显示不同的文本,并在确认之前显示用户必须输入的注解文本字段(:P32_NOTE)。
除了id项(:P32_ID)之外,我还添加了一个保存表名的项(:P32_TABLE)和一个保存文本的项(:P32_DISPLAY)。他们都来自链接,所以没有问题。
我使用了if else based on:P32_TABLE项。
BEGIN
IF :P32_TABLE = 'TBLCASE' THEN
UPDATE TBLCASE SET ISDELETED = 1, DELETE_TIME = LOCALTIMESTAMP, DELETE_USER = :APP_USER, DELETE_NOTE = :P32_NOTE:
WHERE ID = :P32_ID;
ELSIF :P32_TABLE = 'TBLCASECALSS' THEN
UPDATE TBLCASECLASS SET ISDELETED = 1, DELETE_TIME = LOCALTIMESTAMP, DELETE_USER = :APP_USER, DELETE_NOTE = :P32_NOTE:
WHERE ID = :P32_ID;
ELSIF :P32_TABLE = 'TBLCASEDOCUMENT' THEN
UPDATE TBLCASEDOCUMENT SET ISDELETED = 1, DELETE_TIME = LOCALTIMESTAMP, DELETE_USER = :APP_USER, DELETE_NOTE = :P32_NOTE:
WHERE ID = :P32_ID;
ELSIF :P32_TABLE = 'TBLCASEEND' THEN
UPDATE TBLCASEEND SET ISDELETED = 1, DELETE_TIME = LOCALTIMESTAMP, DELETE_USER = :APP_USER, DELETE_NOTE = :P32_NOTE:
WHERE ID = :P32_ID;
END IF;
END;
但只有在:P32_TABLE = TBLCASE
工作的情况下。有什么问题吗
1条答案
按热度按时间vmpqdwk31#
我认为问题是因为你在比较中拼错了表的名称。如果你使用像
execute immediate
这样的动态方法会更好。我将向您展示如何:首先,创建一个数据库
PROCEDURE
以执行update命令。然后替换此代码。
用这个: