{"id":17000,"date":"2025-07-05T11:23:18","date_gmt":"2025-07-05T02:23:18","guid":{"rendered":"https:\/\/www.autooffice.co.kr\/?p=17000"},"modified":"2025-09-15T19:23:51","modified_gmt":"2025-09-15T10:23:51","slug":"apex-custom-login-1","status":"publish","type":"post","link":"https:\/\/www.autooffice.co.kr\/en\/blog\/2025\/07\/05\/apex-custom-login-1\/","title":{"rendered":"[Oracle APEX] \ucee4\uc2a4\ud140 \uc0ac\uc6a9\uc790 \ud14c\uc774\ube14\ub85c \uc778\uc99d\ud558\uace0 \ub85c\uadf8\uc778 \ud558\uae30 &#8211; (1) \ud14c\uc774\ube14 \ubc0f \uad00\ub9ac \ud398\uc774\uc9c0, \ud3fc \uc0dd\uc131"},"content":{"rendered":"<div class=\"wp-block-aioseo-table-of-contents\"><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-\">\uc0ac\uc6a9\uc790 \ud14c\uc774\ube14 \uc0dd\uc131<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-\">\uc0ac\uc6a9\uc790 \uad00\ub9ac \ud398\uc774\uc9c0 \uc0dd\uc131<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-\">\uc0ac\uc6a9\uc790 \uad00\ub9ac \ud3fc \uc0dd\uc131<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-validation-dynamic-action\">Validation\uacfc Dynamic Action \ucd94\uac00<\/a><ul><li><a class=\"aioseo-toc-item\" href=\"#aioseo-dynamic-action\">\ud55c\uae00 \uc785\ub825 \uc81c\ud55c Dynamic Action<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-validation\">\ube44\ubc00\ubc88\ud638 Validation<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-validation\">\ube44\ubc00\ubc88\ud638 \uac80\uc99d Validation<\/a><\/li><\/ul><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-\">\ud3fc \uc815\uc0c1 \uc791\ub3d9 \ud655\uc778<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-\uc5c5\ubb34-\ud6a8\uc728\uc131-200-\uc62c\ub9ac\uae30-with-autooffice\">\uc5c5\ubb34 \ud6a8\uc728\uc131 200% \uc62c\ub9ac\uae30, with autooffice<\/a><\/li><li><a class=\"aioseo-toc-item\" href=\"#aioseo-\ub8e8\ucee4-\uc2a4\ud29c\ub514\uc624-\uac1c\ubc1c-\ubb38\uc758\ub294-\uad6c\uae00\ud3fc\uc744-\uc774\uc6a9\ud574\uc8fc\uc138\uc694\">APEX \uac1c\ubc1c \ubb38\uc758\ub294 \uad6c\uae00\ud3fc\uc744 \uc774\uc6a9\ud574\uc8fc\uc138\uc694!<\/a><\/li><\/ul><\/div>\n\n\n<p><br><br>APEX \uc5d0\uc11c \uae30\ubcf8\uc801\uc73c\ub85c \uc81c\uacf5\ud558\ub294 \ub85c\uadf8\uc778 \uc778\uc99d\uc740 <mark style=\"background-color:var(--global-palette7);color:#f04dcd\" class=\"has-inline-color\">Oracle APEX Accounts<\/mark> \uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>APEX \uac1c\ubc1c\uc790 \ud398\uc774\uc9c0\uc5d0\uc11c \uc0ac\uc6a9\uc790\ub97c \ub4f1\ub85d\ud558\uace0, \ud574\ub2f9 \uc0ac\uc6a9\uc790\ub85c \uc778\uc99d\uc744 \uc9c4\ud589\ud558\ub294 \ubc29\uc2dd\uc774\uc8e0.<\/p>\n\n\n\n<p>\uadf8\ub807\uc9c0\ub9cc <mark style=\"background-color:#fff7cc\" class=\"has-inline-color\"><strong>\uc2e4\ubb34\uc5d0\uc11c\ub294 DB\uc5d0 \uc0ac\uc6a9\uc790 \ud14c\uc774\ube14\uc744 \ub9cc\ub4e4\uace0, \uc0ac\uc6a9\uc790\ub97c \ucd94\uac00, \ubcc0\uacbd, \uc0ad\uc81c\ud560 \uc218 \uc788\ub3c4\ub85d \uad00\ub9ac\ud558\ub294 \uac83\uc774 \ud3b8\ub9ac\ud569\ub2c8\ub2e4.<\/strong><\/mark><\/p>\n\n\n\n<p>\uadf8\ub807\uc9c0 \uc54a\uc73c\uba74 \uc0ac\uc6a9\uc790\uc758 \ubcc0\uacbd\uc774 \uc77c\uc5b4\ub0a0 \ub54c\ub9c8\ub2e4 \uac1c\ubc1c\ud300\uc5d0\uc11c \uac1c\ubc1c \ucf58\uc194\uc5d0 \uc811\uc18d\ud574\uc11c \uc218\uc815\uc744 \ud574\uc8fc\uc5b4\uc57c \ud558\ub294 \ubc88\uac70\ub85c\uc6c0\uc744 \uac10\uc218\ud574\uc57c \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc774 \uc5f0\uc7ac \ud3ec\uc2a4\ud2b8\uc5d0\uc11c\ub294 DB\uc5d0 \ub9cc\ub4e0 \uc0ac\uc6a9\uc790 \ud14c\uc774\ube14\uc744 \ud65c\uc6a9\ud574\uc11c \uc0ac\uc6a9\uc790\ub97c \uc778\uc99d\ud558\uace0 \ub85c\uadf8\uc778\ud558\ub294 \ubc29\ubc95\uc744 \uc18c\uac1c\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p><br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-\">\uc0ac\uc6a9\uc790 \ud14c\uc774\ube14 \uc0dd\uc131<\/h2>\n\n\n\n<p><br>APEX \uac1c\ubc1c \ucf58\uc194\uc758 <mark style=\"background-color:var(--global-palette7);color:#f04dcd\" class=\"has-inline-color\">SQL Workshop<\/mark> &gt; <mark style=\"background-color:var(--global-palette7);color:#f04dcd\" class=\"has-inline-color\">SQL Commands<\/mark>\uc5d0\uc11c \ub2e4\uc74c\uacfc \uac19\uc774 \uc0ac\uc6a9\uc790 \ud14c\uc774\ube14\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uceec\ub7fc\uc740 \uac1c\ubc1c \uc2dc\uc2a4\ud15c\uc5d0 \ub530\ub77c \ubcc0\ud615\ub420 \uc218 \uc788\uc9c0\ub9cc, \uae30\ubcf8\uc801\uc73c\ub85c USER_ID, PASSWORD_HASH\ub294 \ud3ec\ud568\ud558\ub3c4\ub85d \ud569\ub2c8\ub2e4. (\uceec\ub7fc\uba85\uc740 \uc6d0\ud558\ub294 \ub300\ub85c \uc9c0\uc815\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.)<\/p>\n\n\n\n<p>USER_ID\ub97c PRIMARY KEY \ub85c \uc9c0\uc815\ud558\uace0, USER_NAME \uacfc PASSWORD_HASH\ub294 NOT NULL\ub85c \uc9c0\uc815\ud569\ub2c8\ub2e4.<br><br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE TABLE APEX_USERS (\n  USER_ID         VARCHAR2(50) PRIMARY KEY,\n  USER_NAME       VARCHAR2(100) NOT NULL,\n  USER_DEPARTMENT VARCHAR2(100),\n  PASSWORD_HASH   VARCHAR2(255) NOT NULL,\n  CREATED_AT      TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n  CREATED_BY      VARCHAR2(50),\n  UPDATED_AT      TIMESTAMP,\n  UPDATED_BY      VARCHAR2(50)\n);<\/code><\/pre>\n\n\n\n<p><br>\ud14c\uc774\ube14\uc774 \uc0dd\uc131\ub418\uace0 \ub09c \ub4a4\uc5d0, \uc0ac\uc6a9\uc790\ub97c \ud558\ub098 \ucd94\uac00\ud574\uc90d\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc774 \uc0ac\uc6a9\uc790\ub85c \ub85c\uadf8\uc778 \uc778\uc99d\uc744 \ud558\ub824\uace0 \ud569\ub2c8\ub2e4. \uc77c\ub2e8\uc740 \uac04\ub2e8\ud55c \ud328\uc2a4\uc6cc\ub4dc\ub97c \uc9c0\uc815\ud574\uc90d\ub2c8\ub2e4.<br><br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>INSERT INTO APEX_USERS (\n  USER_ID,\n  USER_NAME,\n  USER_DEPARTMENT,\n  PASSWORD_HASH\n) VALUES (\n  'john',\n  '\uc874',\n  '\uc778\uc0ac\ud300',\n  STANDARD_HASH('apex', 'SHA256')\n);<\/code><\/pre>\n\n\n\n<p><br><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\ud83d\udca1STANDARD_HASH \ub294 \uc624\ub77c\ud074 \ub0b4\uc7a5\ud568\uc218\uc778\ub370, \uc785\ub825\uac12(\ubb38\uc790\uc5f4 \ub4f1)\uc5d0 \ub300\ud574 <strong>SHA256, MD5, SHA1<\/strong> \ub4f1 \ub2e4\uc591\ud55c \ud574\uc2dc \uc54c\uace0\ub9ac\uc998\uc744 \uc801\uc6a9\ud558\uc5ec \ud574\uc2dc \uac12\uc744 \ubc18\ud658\ud569\ub2c8\ub2e4.<\/p>\n<\/blockquote>\n\n\n\n<p><br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-\">\uc0ac\uc6a9\uc790 \uad00\ub9ac \ud398\uc774\uc9c0 \uc0dd\uc131<\/h2>\n\n\n\n<p><br>\uc571\uc744 \ud558\ub098 \uc0dd\uc131\ud558\uace0, \ud398\uc774\uc9c0\ub97c \ucd94\uac00\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc0ac\uc6a9\uc790 \uad00\ub9ac \ud398\uc774\uc9c0\uc758 \ubaa9\ub85d \ud398\uc774\uc9c0\ub97c <mark style=\"background-color:var(--global-palette7);color:#f04dcd\" class=\"has-inline-color\">Interactive Grid<\/mark>\ub85c \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>Data Source\ub97c \ubc29\uae08 \uc0dd\uc131\ud55c APEX_USERS \ud14c\uc774\ube14\ub85c \uc9c0\uc815\ud569\ub2c8\ub2e4.<br><br><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/oopy.lazyrockets.com\/api\/v2\/notion\/image?src=attachment%3A1add673e-e03a-4139-843f-226793966fc0%3Af1704c66-91b1-497f-9c4b-b02138fa76a3.png&amp;blockId=20db2d8a-486c-80b0-ba4e-e524a46bd162\" alt=\"\"\/><\/figure>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/oopy.lazyrockets.com\/api\/v2\/notion\/image?src=attachment%3A6a1a5ec0-d188-4dcb-936b-98693d4eab39%3A65f8e181-f580-49ba-b062-ed960597cf7d.png&amp;blockId=20db2d8a-486c-806c-a673-cd701d9f857e\" alt=\"\"\/><\/figure>\n\n\n\n<p><br>\ud398\uc774\uc9c0\uac00 \uc0dd\uc131\ub41c \ud6c4\uc5d0, \ud398\uc774\uc9c0 \ud3b8\uc9d1 \ud654\uba74\uc73c\ub85c \uc774\ub3d9\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>USER_ID\ub294 Primary Key \uc774\uae30 \ub54c\ubb38\uc5d0 \uae30\ubcf8\uc73c\ub85c Hidden\uc73c\ub85c \uceec\ub7fc\uc774 \uc9c0\uc815\ub418\ub294\ub370, Text Field\ub85c \ubcc0\uacbd\ud574\uc11c \ud45c\uc2dc\ub418\ub3c4\ub85d \uc870\uce58\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ud3b8\uc9d1 \ud654\uba74\uc5d0\uc11c \uc6b0\uce21 \uc0c1\ub2e8\uc758 \ud50c\ub808\uc774 \ubc84\ud2bc\uc744 \ub20c\ub7ec\uc11c \ud398\uc774\uc9c0\ub97c \uc2e4\ud589\ud574\ubd05\ub2c8\ub2e4.<br><br><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/oopy.lazyrockets.com\/api\/v2\/notion\/image?src=attachment%3A770aa43b-5546-4b37-bb5c-576122a85fd1%3Af90b4b06-520d-4f40-b190-ad7e870ebb41.png&amp;blockId=20db2d8a-486c-80c8-9da1-cc5b29596785\" alt=\"\"\/><\/figure>\n\n\n\n<p><br>\ub85c\uadf8\uc778 \ud398\uc774\uc9c0\uac00 \ud45c\uc2dc\ub418\ub294\ub370, \uc6b0\uc120\uc740 APEX \uae30\ubcf8 \ub85c\uadf8\uc778 \ubc29\uc2dd\uc73c\ub85c \ub85c\uadf8\uc778\ud574\uc8fc\uc5b4\uc57c \ud569\ub2c8\ub2e4. \uc6cc\ud06c\uc2a4\ud398\uc774\uc2a4\uc5d0 \ub4f1\ub85d\ub41c \uacc4\uc815\uc73c\ub85c \ub85c\uadf8\uc778\ud569\ub2c8\ub2e4.<br><br><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/oopy.lazyrockets.com\/api\/v2\/notion\/image?src=attachment%3A9e84ec84-34f3-46ad-816b-8510c14f0768%3A917f9643-6464-47a2-ad21-6edf86a0e712.png&amp;blockId=20db2d8a-486c-808d-8c6d-c1ec25c3322b\" alt=\"\"\/><\/figure>\n\n\n\n<p><br>\ubc29\uae08 \uc0dd\uc131\ud55c \uc0ac\uc6a9\uc790 \uad00\ub9ac \ud398\uc774\uc9c0\ub97c \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br><br><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/oopy.lazyrockets.com\/api\/v2\/notion\/image?src=attachment%3A584dce2b-7fdd-457d-b7f6-3c65ccb3c9e0%3A909c7786-7a5f-4662-b671-87b08472e352.png&amp;blockId=20db2d8a-486c-806d-9c3c-c50525403173\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-\"><br>\uc0ac\uc6a9\uc790 \uad00\ub9ac \ud3fc \uc0dd\uc131<\/h2>\n\n\n\n<p><br>\uc774\uc81c APEX \ud398\uc774\uc9c0\uc5d0\uc11c \uc0ac\uc6a9\uc790\ub97c \ucd94\uac00, \uc0ad\uc81c, \ud3b8\uc9d1\ud560 \uc218 \uc788\ub3c4\ub85d \ud3fc\uc744 \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc18c\uc2a4\ub97c \ub3d9\uc77c\ud558\uac8c APEX_USERS\ub97c \uc120\ud0dd\ud574\uc11c \ud3fc\uc744 \uc0dd\uc131\ud569\uc2dc\ub2e4.<br><br><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/oopy.lazyrockets.com\/api\/v2\/notion\/image?src=attachment%3A3dd67b3a-00e9-473c-92fd-e0bcbc72a1fc%3A899730c1-4386-4b68-8e85-00d00c9c351a.png&amp;blockId=20db2d8a-486c-80c4-8557-d9e2361cac3c\" alt=\"\"\/><\/figure>\n\n\n\n<p><br>\uc0ac\uc6a9\uc790 \uad00\ub9ac \ud398\uc774\uc9c0(10\ubc88 \ud398\uc774\uc9c0)\ub85c \uc774\ub3d9\ud574\uc11c USER_ID\uc5d0 \ub9c1\ud06c\ub97c \uc0dd\uc131\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc0ac\uc6a9\uc790 \uad00\ub9ac \ud3fc\uc778 11\ubc88 \ud398\uc774\uc9c0\ub85c \ub9c1\ud06c\ub97c \uc0dd\uc131\ud558\uba74\uc11c USER_ID\ub97c \uc804\ub2ec\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc774\ub807\uac8c \ud558\uba74 10\ubc88 \ud398\uc774\uc9c0\uc5d0\uc11c USER_ID\ub97c \ud074\ub9ad\ud574\uc11c 11\ubc88 \ud398\uc774\uc9c0\uac00 \ud45c\uc2dc\ub420 \ub54c\uc5d0 Primary Key\ub85c \ub370\uc774\ud130\ub97c \ubd88\ub7ec\uc640\uc11c \ud3fc\uc744 \ud45c\uc2dc\ud558\uac8c \ub429\ub2c8\ub2e4.<br><br><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/oopy.lazyrockets.com\/api\/v2\/notion\/image?src=attachment%3A5472c275-eb3a-4596-8498-f9eaaaed26af%3Aa4d1da1a-8ae7-48d4-a3c0-4bdac5943eec.png&amp;blockId=20db2d8a-486c-806b-bfe6-d846a75937de\" alt=\"\"\/><\/figure>\n\n\n\n<p><br>\ub9c1\ud06c\uac00 \uc62c\ubc14\ub974\uac8c \uc801\uc6a9\ub418\uc5c8\ub294\uc9c0 \ud14c\uc2a4\ud2b8 \ud574\ubd05\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc0ac\uc6a9\uc790 \uad00\ub9ac \ud398\uc774\uc9c0\uc5d0\uc11c USER_ID\ub97c \ud074\ub9ad\ud558\uba74 \uc0ac\uc6a9\uc790 \uad00\ub9ac \ud3fc\uc774 \ud45c\uc2dc\ub429\ub2c8\ub2e4.<br><br><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/oopy.lazyrockets.com\/api\/v2\/notion\/image?src=attachment%3A0bf24977-fe29-42bc-a179-c511308e04a6%3A2dff9013-3e6c-48d3-b14a-8bad267e4230.png&amp;blockId=20db2d8a-486c-800b-9f13-e1f02c30a3f9\" alt=\"\"\/><\/figure>\n\n\n\n<p><br>\uc774\uc81c \ud3fc\uc5d0\uc11c \uc0c8\ub85c\uc6b4 \ud328\uc2a4\uc6cc\ub4dc\ub97c \uc785\ub825\ubc1b\uae30 \uc704\ud574\uc11c \ub2e4\uc74c\uacfc \uac19\uc774 \uc218\uc815\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\u2022  \uc0dd\uc131\uc77c\uc2dc, \uc218\uc815\uc77c\uc2dc \ub4f1\uc758 \ud56d\ubaa9\uc740 Hidden \ucc98\ub9acUSER_ID, PASSWORD_HASH\ub294 Read Only: Always \ucc98\ub9ac\ud574\uc11c \uc218\uc815\ud560 \uc218 \uc5c6\ub3c4\ub85d \uc870\uce58<br>\u25e6 PASSWORD_HASH\ub294 \ubcf4\uc5ec\uc904 \ud544\uc694\ub294 \uc5c6\uc9c0\ub9cc \ud574\uc2dc \uac12\uc774 \ubcc0\uacbd\ub418\uc5b4 \uc800\uc7a5\ub418\ub294\uc9c0 \ud655\uc778\ud558\uae30 \uc704\ud574\uc11c \uc784\uc2dc\ub85c \ud45c\uc2dc\ub97c \ud574\uc90d\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\u2022  \ud398\uc774\uc9c0 ITEM\uc73c\ub85c NEW_PASSWORD\uc640 NEW_PASSWORD_CONFIRM\uc744 \ucd94\uac00<\/p>\n\n\n\n<p>\u2022  Layout\uc744 \uc801\uc808\ud788 \uc870\uc815<br><br><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/oopy.lazyrockets.com\/api\/v2\/notion\/image?src=attachment%3A768243e0-11e2-41ff-8ccd-e7ea671ab003%3A3b49da3b-4795-44f5-a6e3-b7e15f5ed7bb.png&amp;blockId=20db2d8a-486c-80a1-bf2e-eb7b41044a6d\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-validation-dynamic-action\"><br>Validation\uacfc Dynamic Action \ucd94\uac00<\/h2>\n\n\n\n<p><br>\uc0ac\uc6a9\uc790 \uad00\ub9ac \ud3fc\uc744 \uc5f4\uba74 \uc0ac\uc6a9\uc790\uc758 \ud328\uc2a4\uc6cc\ub4dc\ub97c \uc218\uc815\ud560 \uc218 \uc788\ub3c4\ub85d \ud328\uc2a4\uc6cc\ub4dc\uc640 \ud328\uc2a4\uc6cc\ub4dc \ud655\uc778 \uc544\uc774\ud15c\uc744 \ucd94\uac00\ud588\uc2b5\ub2c8\ub2e4. \uc774\uc81c \uac01 \uc544\uc774\ud15c\uc5d0 Validation\uacfc Dynamic Action\uc744 \ucd94\uac00\ud574\uc11c \uc758\ub3c4\ub300\ub85c \ub3d9\uc791\ud558\ub3c4\ub85d \ub9cc\ub4e4\uc5b4 \uc90d\ub2c8\ub2e4.<br><br><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"aioseo-dynamic-action\">\ud55c\uae00 \uc785\ub825 \uc81c\ud55c Dynamic Action<\/h3>\n\n\n\n<p><br>\ud328\uc2a4\uc6cc\ub4dc(NEW_PASSWORD)\uc5d0 \ud55c\uae00\uc774 \uc785\ub825\ub418\uc9c0 \uc54a\uace0, \uc601\ubb38 \ub300\uc18c\ubb38\uc790\uc640 \ud2b9\uc218\ubb38\uc790\ub9cc \uc785\ub825\ub418\ub3c4\ub85d Dynamic Action\uc744 \ucd94\uac00\ud569\ub2c8\ub2e4. (\ud328\uc2a4\uc6cc\ub4dc \ud655\uc778(NEW_PASSWORD_CONFIRM)\uc5d0\ub3c4 \ub3d9\uc77c\ud55c Dynamic Action\uc744 \uc801\uc6a9\ud574\uc90d\ub2c8\ub2e4.)<\/p>\n\n\n\n<p><strong>\uc815\ud574\uc9c4 \uce90\ub9ad\ud130 \uc774\uc678\uc758 \ubb38\uc790\uac00 \uc785\ub825\ub418\ub294 \uacbd\uc6b0 \uacf5\ubc31\uc73c\ub85c \ubc14\uafb8\uc5b4 \uc90d\ub2c8\ub2e4.<\/strong><\/p>\n\n\n\n<p>\u2022 When: Key Release<\/p>\n\n\n\n<p>\u2022 Execute Javascript Code<\/p>\n\n\n\n<p><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>let input = $v('P11_NEW_PASSWORD'); \/\/ \ud398\uc774\uc9c0 \ud56d\ubaa9 \uc774\ub984\nlet filtered = input.replace(\/\uff3b^A-Za-z0-9!@#$%^\uff06*(){}\\-_+=|;:,.\uff1c\uff1e?\\\/~]\/g, '');\n$s('P11_NEW_PASSWORD', filtered);<\/code><\/pre>\n\n\n\n<p><br><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\ud83d\udca1\ub300\uad04\ud638, \uc791\uc740 \ub530\uc634\ud45c\ub294 \ud5c8\uc6a9\ud558\ub294 \ud2b9\uc218\ubb38\uc790\uc5d0\uc11c \uc81c\uc678\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\u2022 \ub300\uad04\ud638\uc758 \uacbd\uc6b0 \\[ \uc640 \uac19\uc774 \uc774\uc2a4\ucf00\uc774\ud504\ud574\uc8fc\uc5b4\ub3c4 Validation\uc5d0\uc11c \uc624\ub958\uac00 \ubc1c\uc0dd\ud558\ub124\uc694.<\/p>\n\n\n\n<p>\u2022 \uc791\uc740 \ub530\uc634\ud45c\ub294 \uc774\uc5b4\uc11c \ub098\uc624\ub294 \ud504\ub85c\uc2dc\uc800\uc5d0\uc11c REGEXP_LIKE\uc5d0\uc11c \uc791\uc740 \ub530\uc634\ud45c\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uacfc \uacb9\uccd0\uc11c \ud568\uc218 \uc778\uc2dd\uc774 \uc548\ub429\ub2c8\ub2e4.<\/p>\n<\/blockquote>\n\n\n\n<p><br><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"aioseo-validation\">\ube44\ubc00\ubc88\ud638 Validation<\/h3>\n\n\n\n<p><br>\ub2e4\uc74c\uacfc \uac19\uc774 Validation\uc744 NEW_PASSWORD\uc5d0 \ucd94\uac00\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ud328\uc2a4\uc6cc\ub4dc\uc758 \uae38\uc774, \uc601\ubb38 \ub300\uc18c\ubb38\uc790\/\uc22b\uc790\/\ud2b9\uc218\ubb38\uc790 \ud3ec\ud568 \uc5ec\ubd80\ub97c \uac80\uc99d\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\u2022 Type: Function Body (returning Error Text)<\/p>\n\n\n\n<p>\u2022 PL\/SQL<\/p>\n\n\n\n<p><br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>BEGIN\n  IF LENGTH(:P11_NEW_PASSWORD) \uff1c 8 OR LENGTH(:P11_NEW_PASSWORD) \uff1e 20 THEN\n    RETURN '\ube44\ubc00\ubc88\ud638\ub294 8\uc790 \uc774\uc0c1 20\uc790 \uc774\ud558\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.';\n  ELSIF NOT REGEXP_LIKE(:P11_NEW_PASSWORD, '\uff3b0-9\uff3d') THEN\n    RETURN '\ube44\ubc00\ubc88\ud638\uc5d0\ub294 \uc801\uc5b4\ub3c4 \ud558\ub098\uc758 \uc22b\uc790\uac00 \ud3ec\ud568\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.';\n  ELSIF NOT REGEXP_LIKE(:P11_NEW_PASSWORD, '\uff3ba-z\uff3d', 'c') THEN\n    RETURN '\ube44\ubc00\ubc88\ud638\uc5d0\ub294 \uc801\uc5b4\ub3c4 \ud558\ub098\uc758 \uc18c\ubb38\uc790\uac00 \ud3ec\ud568\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.';\n  ELSIF NOT REGEXP_LIKE(:P11_NEW_PASSWORD, '\uff3bA-Z\uff3d', 'c') THEN\n    RETURN '\ube44\ubc00\ubc88\ud638\uc5d0\ub294 \uc801\uc5b4\ub3c4 \ud558\ub098\uc758 \ub300\ubb38\uc790\uac00 \ud3ec\ud568\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.';\n  ELSIF NOT REGEXP_LIKE(:P11_NEW_PASSWORD, '\uff3b!@#$%^\uff06*(){}\\-_+=|;:,.\uff1c\uff1e?\/~\uff3d', 'c') THEN\n    RETURN '\ube44\ubc00\ubc88\ud638\uc5d0\ub294 \uc801\uc5b4\ub3c4 \ud558\ub098\uc758 \ud2b9\uc218\ubb38\uc790(!@#$%^\uff06*(){}-_+=|;:,.\uff1c\uff1e?\/~)\uac00 \ud3ec\ud568\ub418\uc5b4\uc57c \ud569\ub2c8\ub2e4.';\n  ELSE\n    RETURN NULL;\n  END IF;\nEND;<\/code><\/pre>\n\n\n\n<p><br><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"aioseo-validation\">\ube44\ubc00\ubc88\ud638 \uac80\uc99d Validation<\/h3>\n\n\n\n<p><br>\ube44\ubc00\ubc88\ud638\ub97c \ud55c \ubc88 \ub354 \uc368\uc904 \ub54c, \uac80\uc99d\ud558\ub294 \ube44\ubc00\ubc88\ud638\uac00 \uc6d0\ub798 \uc785\ub825\ud55c \ube44\ubc00\ubc88\ud638\uc640 \uac19\uc740\uc9c0 \uccb4\ud06c\ud558\uae30 \uc704\ud574 Validation\uc744 \ucd94\uac00\ud574\uc90d\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\u2022 Type: Function Body (returning Error Text)<\/p>\n\n\n\n<p>\u2022 PL\/SQL<\/p>\n\n\n\n<p><br><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>BEGIN\n  IF :P11_NEW_PASSWORD IS NOT NULL THEN\n    IF :P11_NEW_PASSWORD_CONFIRM IS NULL THEN\n      RETURN '\ube44\ubc00\ubc88\ud638 \ud655\uc778\uc744 \uc785\ub825\ud574\uc8fc\uc138\uc694.';\n    ELSIF :P11_NEW_PASSWORD != :P11_NEW_PASSWORD_CONFIRM THEN\n      RETURN '\ube44\ubc00\ubc88\ud638\uac00 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.';\n    END IF;\n  END IF;\n  RETURN NULL;\nEND;<\/code><\/pre>\n\n\n\n<p><br><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-\">\ud3fc \uc815\uc0c1 \uc791\ub3d9 \ud655\uc778<\/h2>\n\n\n\n<p><br>\uc801\uc6a9\ud55c Dynamic Action\uacfc Validation\uc774 \uc815\uc0c1 \uc791\ub3d9\ud558\ub294\uc9c0 \ud655\uc778\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub9e8 \ub9c8\uc9c0\ub9c9 \uc785\ub825\uc5d0\uc11c\ub9cc \ud1b5\uacfc\uac00 \ub418\uba74 \uc131\uacf5\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\u2022 NEW PASSWORD \uc21c\uc11c\ub300\ub85c \ub123\uc5b4\ubd05\ub2c8\ub2e4.<br>\u25e6 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\ub294 \ubb38\uc790\ub97c \ub123\uc5b4\ubd05\ub2c8\ub2e4: []<br>\u25e6 8\uc790\ub9ac \uc774\ud558\ub97c \ub123\uc5b4\ubd05\ub2c8\ub2e4: 1234567<br>\u25e6 8\uc790\ub9ac \uc22b\uc790\ub9cc \ub123\uc5b4\ubd05\ub2c8\ub2e4: 12345678<br>\u25e6 \uc601\ubb38 \uc18c\ubb38\uc790\ub97c \ucd94\uac00\ud574\uc11c \ub123\uc5b4\ubd05\ub2c8\ub2e4: a12345678<br>\u25e6 \uc601\ubb38 \ub300\ubb38\uc790\ub97c \ucd94\uac00\ud574\uc11c \ub123\uc5b4\ubd05\ub2c8\ub2e4: aA12345678<br>\u25e6 \ub9c8\uc9c0\ub9c9\uc73c\ub85c \ud2b9\uc218\ubb38\uc790\ub97c \ucd94\uac00\ud574\uc11c \ub123\uc5b4\ubd05\ub2c8\ub2e4: aA12345678!<\/p>\n\n\n\n<p>\u2022 CONFIRM NEW PASSWORD \uc5d0\ub3c4 \ub123\uc5b4\ubd05\ub2c8\ub2e4.<br>\u25e6 \ud5c8\uc6a9\ub418\uc9c0 \uc54a\ub294 \ubb38\uc790\ub97c \ub123\uc5b4\ubd05\ub2c8\ub2e4: []<br>\u25e6 NEW PASSWORD\uc640 \uc77c\uce58\ud558\uc9c0 \uc54a\ub294 \uac83\uc744 \ub123\uc5b4\ubd05\ub2c8\ub2e4.<br>\u25e6 NEW PASSWORD\uc640 \uc77c\uce58\ud55c \uac83\uc744 \ub123\uc5b4\ubd05\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc62c\ubc14\ub978 \uac12\uc744 \uc785\ub825\ud558\uba74 PASSWORD_HASH\uc758 \uac12\uc774 \ubcc0\uacbd\ub41c \uac83\uc744 \ud655\uc778\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br><br><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/oopy.lazyrockets.com\/api\/v2\/notion\/image?src=attachment%3Ac6bddd2c-91bb-4062-9e79-9bd008660f05%3A19e5b625-4c24-4600-a09a-1c53df4132e7.png&amp;blockId=20eb2d8a-486c-8045-919a-f2e4a599dddc\" alt=\"\"\/><\/figure>\n\n\n\n<p><br>\uc774\uc81c \uc0ac\uc6a9\uc790 \uad00\ub9ac \ud3fc\uae4c\uc9c0 \uc900\ube44\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub2e4\uc74c\uc73c\ub85c\ub294 \ub85c\uadf8\uc778 \ud398\uc774\uc9c0\uc5d0\uc11c APEX Accounts\uac00 \uc544\ub2c8\ub77c APEX_USERS \ud14c\uc774\ube14\uc744 \uc870\ud68c\ud574\uc11c \uc778\uc99d\uc744 \uc9c4\ud589\ud558\ub3c4\ub85d \ud504\ub85c\uc2dc\uc800\ub97c \uc791\uc131\ud574\uc8fc\uc5b4\uc57c \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub2e4\uc74c \ud3ec\uc2a4\ud2b8\uc5d0\uc11c \uc774\uc5b4\uc9d1\ub2c8\ub2e4.<br><\/p>\n\n\n\n<p><a href=\"https:\/\/www.autooffice.co.kr\/blog\/2025\/07\/07\/apex-custom-login-2\/\" target=\"_blank\" rel=\"noopener\" title=\"\">[Oracle APEX] \ucee4\uc2a4\ud140 \uc0ac\uc6a9\uc790 \ud14c\uc774\ube14\ub85c \uc778\uc99d\ud558\uace0 \ub85c\uadf8\uc778 \ud558\uae30 \u2013 (2) \ub85c\uadf8\uc778 \ud328\ud0a4\uc9c0<\/a><br><br><\/p>\n\n\n\n<p><br><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity is-style-wide\"\/>\n\n\n\n<p><br><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"691\" height=\"512\" src=\"https:\/\/www.autooffice.co.kr\/wp\/wp-content\/uploads\/2025\/08\/image-27.png\" alt=\"\" class=\"wp-image-17075\" srcset=\"https:\/\/www.autooffice.co.kr\/wp\/wp-content\/uploads\/2025\/08\/image-27.png 691w, https:\/\/www.autooffice.co.kr\/wp\/wp-content\/uploads\/2025\/08\/image-27-300x222.png 300w\" sizes=\"auto, (max-width: 691px) 100vw, 691px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-\uc5c5\ubb34-\ud6a8\uc728\uc131-200-\uc62c\ub9ac\uae30-with-autooffice\">\uc5c5\ubb34 \ud6a8\uc728\uc131 200% \uc62c\ub9ac\uae30, with autooffice<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"aioseo-\ub8e8\ucee4-\uc2a4\ud29c\ub514\uc624-\uac1c\ubc1c-\ubb38\uc758\ub294-\uad6c\uae00\ud3fc\uc744-\uc774\uc6a9\ud574\uc8fc\uc138\uc694\">APEX \uac1c\ubc1c \ubb38\uc758\ub294 \uad6c\uae00\ud3fc\uc744 \uc774\uc6a9\ud574\uc8fc\uc138\uc694!<\/h2>\n\n\n\n<p><\/p>\n\n\n\n<p><a href=\"https:\/\/docs.google.com\/forms\/d\/e\/1FAIpQLSc-FiMM9foF0jEAWqL7IePJTEdQ0X9asQTENOIv_3mltyq2zg\/viewform?pli=1\" target=\"_blank\" rel=\"noopener\" title=\"\">\uc624\ud1a0\uc624\ud53c\uc2a4 \ud504\ub85c\uc81d\ud2b8 \ubb38\uc758<\/a><\/p>\n\n\n\n<p><br><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>APEX \uc5d0\uc11c \uae30\ubcf8\uc801\uc73c\ub85c \uc81c\uacf5\ud558\ub294 \ub85c\uadf8\uc778 \uc778\uc99d\uc740 Oracle APEX Accounts \uc785\ub2c8\ub2e4. APEX \uac1c\ubc1c\uc790 \ud398\uc774\uc9c0\uc5d0\uc11c \uc0ac\uc6a9\uc790\ub97c \ub4f1\ub85d\ud558\uace0, \ud574\ub2f9 \uc0ac\uc6a9\uc790\ub85c \uc778\uc99d\uc744 \uc9c4\ud589\ud558\ub294 \ubc29\uc2dd\uc774\uc8e0. \uadf8\ub807\uc9c0\ub9cc \uc2e4\ubb34\uc5d0\uc11c\ub294 DB\uc5d0 \uc0ac\uc6a9\uc790 \ud14c\uc774\ube14\uc744 \ub9cc\ub4e4\uace0, \uc0ac\uc6a9\uc790\ub97c \ucd94\uac00, \ubcc0\uacbd, \uc0ad\uc81c\ud560 \uc218 \uc788\ub3c4\ub85d \uad00\ub9ac\ud558\ub294 \uac83\uc774 \ud3b8\ub9ac\ud569\ub2c8\ub2e4. \uadf8\ub807\uc9c0 \uc54a\uc73c\uba74 \uc0ac\uc6a9\uc790\uc758 \ubcc0\uacbd\uc774 \uc77c\uc5b4\ub0a0 \ub54c\ub9c8\ub2e4 \uac1c\ubc1c\ud300\uc5d0\uc11c \uac1c\ubc1c \ucf58\uc194\uc5d0 \uc811\uc18d\ud574\uc11c \uc218\uc815\uc744 \ud574\uc8fc\uc5b4\uc57c \ud558\ub294 \ubc88\uac70\ub85c\uc6c0\uc744 \uac10\uc218\ud574\uc57c \ud569\ub2c8\ub2e4. \uc774 \uc5f0\uc7ac \ud3ec\uc2a4\ud2b8\uc5d0\uc11c\ub294 DB\uc5d0&#8230;<\/p>\n","protected":false},"author":6,"featured_media":17003,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"footnotes":""},"categories":[580],"tags":[551,583,581,584,12],"class_list":["post-17000","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-apex","tag-autooffice","tag-custom-login","tag-oracle-apex","tag-584","tag-12"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"en","enabled_languages":["ko","en"],"languages":{"ko":{"title":true,"content":true,"excerpt":false},"en":{"title":false,"content":false,"excerpt":false}}},"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.autooffice.co.kr\/en\/wp-json\/wp\/v2\/posts\/17000","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.autooffice.co.kr\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.autooffice.co.kr\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.autooffice.co.kr\/en\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.autooffice.co.kr\/en\/wp-json\/wp\/v2\/comments?post=17000"}],"version-history":[{"count":7,"href":"https:\/\/www.autooffice.co.kr\/en\/wp-json\/wp\/v2\/posts\/17000\/revisions"}],"predecessor-version":[{"id":17270,"href":"https:\/\/www.autooffice.co.kr\/en\/wp-json\/wp\/v2\/posts\/17000\/revisions\/17270"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.autooffice.co.kr\/en\/wp-json\/wp\/v2\/media\/17003"}],"wp:attachment":[{"href":"https:\/\/www.autooffice.co.kr\/en\/wp-json\/wp\/v2\/media?parent=17000"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.autooffice.co.kr\/en\/wp-json\/wp\/v2\/categories?post=17000"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.autooffice.co.kr\/en\/wp-json\/wp\/v2\/tags?post=17000"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}