| How to expand navigation menu on hover |
Click the Download link to get the code that are used in this video.
Think it helps you. Good luck.
| How to expand navigation menu on hover |
select APEX_STRING_UTIL.TO_DISPLAY_FILESIZE(13312312) from dual; -> 12.7MBExample 2:
select APEX_STRING_UTIL.FIND_FILE_EXTENSION('foo.xlsx') from dual
-> xlsx
There are very effective functions in APEX_STRING_UTL are waiting for you.f?p=App:Page:Session:Request:Debug:ClearCache:itemNames:itemValues:PrinterFriendlyAfter launching friendly URL from 20.1, URL looks like.
https://apex.oracle.com/pls/apex/zigzag/r/apex-recipe/home?session=714253588663910The construction of URL is still same, it just changes appearance.

DECLARE
l_url varchar2(2000);
l_app number := v('APP_ID');
l_session number := v('APP_SESSION');
BEGIN
l_url := APEX_UTIL.PREPARE_URL(
p_url => 'f?p=' || l_app || ':10:'||l_session||'::NO::P10_ITEM:ABC',
p_checksum_type => 'SESSION');
END;
You can use APEX_UTL.PREPARE_URL within anchor tag (<a> tag) like,<a href="'|| APEX_UTIL.PREPARE_URL(
p_url => 'f?p=' || V('APP_ID') || ':27:'|| V('APP_SESSION') ||'::NO::P27_GUEST_ID:'|| ID ||'',
p_checksum_type => 'SESSION')||'">
Link Text</a>
And if your user is public user and page is public page then use this code.APEX_UTIL.PREPARE_URL(p_url => 'f?p=' || :APP_ID || ':10:'|| :APP_SESSION ||'::NO::P10_ITEM:ABC');
ALTER SESSION SET CURRENT_SCHEMA = APEX_190200;
SELECT RTRIM (MIN (user_id)) user_id
FROM wwv_flow_fnd_user
WHERE security_group_id = 10 AND user_name = UPPER ('ADMIN');
5. To change or reset password of ADMIN username,UPDATE wwv_flow_fnd_user
SET web_password = 'Apexpassword1#'
WHERE user_name = 'ADMIN' AND user_id = '1820122815444026';
NB: Here, "1820122815444026" is the userid that you get from previous query.BEGIN
WWV_FLOW_SECURITY.g_security_group_id := 10;
WWV_FLOW_FND_USER_API.unlock_account ('ADMIN');
COMMIT;
END;
If you use Toad or SQL Developer then you can start from step 4 by direct login your apex schema. CREATE OR REPLACE DIRECTORY CSV_DIR AS 'c:\oracle\csv_files'; GRANT READ, WRITE ON DIRECTORY CSV_DIR TO HR;Then, write a procedure at HR schema to place the .csv blob file to the CSV_DIR directory.
CREATE OR REPLACE PROCEDURE pro_save_csv_to_dir ( p_csv_blob IN OUT NOCOPY BLOB, p_dir IN VARCHAR2, p_filename IN VARCHAR2) AS v_file UTL_FILE.file_type; v_buffer RAW (32767); v_amount BINARY_INTEGER := 32767; v_pos INTEGER := 1; v_blob_len INTEGER; BEGIN v_blob_len := DBMS_LOB.getlength (p_csv_blob); v_file := UTL_FILE.fopen (p_dir, p_filename, 'wb', 32767); WHILE v_pos <= v_blob_len LOOP DBMS_LOB.read (p_csv_blob, v_amount, v_pos, v_buffer); UTL_FILE.put_raw (v_file, v_buffer, TRUE); v_pos := v_pos + v_amount; END LOOP; UTL_FILE.fclose (v_file); EXCEPTION WHEN OTHERS THEN UTL_FILE.fclose (v_file); RAISE; END;NB: Here, "p_csv_blob" is your .csv blob file, "p_dir" is your created directory name.
CREATE OR REPLACE PROCEDURE pro_insert_from_dir (
p_dir IN VARCHAR2,
p_file_name IN VARCHAR2,
p_table_name IN VARCHAR2,
p_out_msg OUT VARCHAR2)
AS
v_values VARCHAR2 (20000);
v_values2 VARCHAR2 (20000);
sqlstmt VARCHAR2 (20000);
acc_open_file UTL_FILE.file_type;
BEGIN
acc_open_file :=
UTL_FILE.fopen ('' || p_dir || '', '' || p_file_name || '', 'R');
LOOP
BEGIN
UTL_FILE.get_line (acc_open_file, v_values);
DBMS_OUTPUT.put_line (v_values);
SELECT REPLACE (v_values, ',', ''',
''')
INTO v_values2
FROM DUAL;
sqlstmt :=
'insert into '
|| p_table_name
|| ' (col1, col2, col3) values('''
|| v_values2
|| ''')';
EXECUTE IMMEDIATE sqlstmt;
DBMS_OUTPUT.put_line (sqlstmt);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
EXIT;
END;
END LOOP;
UTL_FILE.fclose (acc_open_file);
END;
CREATE OR REPLACE DIRECTORY XLSX_DIR AS 'c:\oracle\xlsx_files'; GRANT READ, WRITE ON DIRECTORY XLSX_DIR TO HR;3. Place xlsx file to this directory.
SELECT *
FROM TABLE(as_read_xlsx.read(as_read_xlsx.file2blob('XLSX_DIR', 'file.xlsx')));
The result would be viewed as like as a query from a table. Now you can use this query in PL/SQL procedure as a cursor and insert data into database table. WITH xlsx
AS (SELECT ROW_NR,
COL_NR,
CASE CELL_TYPE
WHEN 'S' THEN STRING_VAL
WHEN 'N' THEN TO_CHAR (NUMBER_VAL)
WHEN 'D' THEN TO_CHAR (DATE_VAL, 'MM/DD/YYYY')
ELSE FORMULA
END
CELL_VAL
FROM (SELECT *
FROM TABLE (as_read_xlsx.read (
(SELECT blob_column
FROM xlsx_files
WHERE xlsx_id = 1),
'Sheet1'))))
SELECT xl.ID,
xl.FIRST_NAME,
xl.LAST_NAME,
xl.FATHER_NAME
FROM xlsx PIVOT (MAX (CELL_VAL)
FOR COL_NR
IN (1 AS ID,
2 AS FIRST_NAME,
3 AS LAST_NAME,
4 AS FATHER_NAME)) xl
WHERE row_nr > 1;
NB: Here, "xlsx_files" is database table, "blob_column" is blob column of table, "xlsx_id" is unique key of table, "Sheet1" is the sheet name of excel's xlsx file and "row_nr > 1" is used to cut the row from header of excel's xlsx file.