UTIL_FILE
Hi Oracle GURUs ,
I have a problem in outputing the content of a text file on the server using UTIL_FILE .When I execute this code , it is creating PL/SQL procedure successfully but without giving the output ....Here is the code :
DECLARE
DATA_LINE VARCHAR2(50);
FILE_HANDLE UTL_FILE.FILE_TYPE;
BEGIN
FILE_HANDLE := UTL_FILE.FOPEN('D:\WORK', 'TEST', 'R');
UTL_FILE.GET_LINE(FILE_HANDLE,DATA_LINE);
UTL_FILE.FCLOSE(FILE_HANDLE);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('READ PAST EOF');
WHEN OTHERS THEN
UTL_FILE.FCLOSE(FILE_HANDLE);
END;
My guess is that it is rasing WHEN OTHERS exception .....Am I missing something ...Please help......
TIA
Try to use the following to trap the exception and check if you have setup the parameter utl_file_dir properly ^_^
exception
when utl_file.invalid_path then
dbms_output.put_line('Invalid Path');
when utl_file.invalid_mode then
dbms_output.put_line('Invalid Mode');
when utl_file.invalid_filehandle then
dbms_output.put_line('Invalid Filehandle');
when utl_file.invalid_operation then
dbms_output.put_line('Invalid Operation');
when utl_file.read_error then
dbms_output.put_line('Read Error');
when utl_file.write_error then
dbms_output.put_line('Write Error');
when utl_file.internal_error then
dbms_output.put_line('Internal Error');
Rgds,
Edward
Similar Messages
-
UTIL_File In Remote Node
Hi,
My Problem is that we seperated our AppServer(Solaris) and DBServer(Solaris) and some of my Script uses UTIL_FILE to write file from database,so i mounted My Appserver in DBServer so that it writes the data in Appserver only,now my Mount is working fine still i'm getting Oracle Error
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 488
ORA-29283: invalid file operation
And i have given the Folder Full permission(777) but still no use,
so is that a permission issue or My SP is not workingHi,
has the user already assigned Write Privilege to the Virtual Directory.
777 is in the OS Level, but in the DB Level, SYS need to grant privilege to the user.
HTH -
How to rename a file once it is created with util_file utility.
Hi,
A flat file is generated with util_file utility, now we want to rename the file using utilities available with Oracle. Can any body give any solution..?, Any package is available...?
Regards,
G. Rajakumar.Hi Raja
If you are using Oracle 8i or later version you can easily do it writing a Java stored procedure and calling it,
in your PL/SQL wrapper function.
I recently had a similar problem and did it successfully.
If you need the code along with the wrapper function, I can send it to you on your e-mail.
Qurashi -
Hi
I am trying to open one file using UTIL_FILE.FOPEN and log the error msgs into the file
But the file is not getting created in the path specified
DECLARE
CURSOR CUR_ERR_HEADER IS
SELECT PRODUCT_CODE || '|' || PRODUCT_CODE_TYPE || '|' ||
PRODUCT_CODE_VARIANT || '|' || PRODUCT_CODE_FRMT || '|' || PRODUCT_NAME || '|' ||
PROD_ATTRIBUTE_CHAR|| '|' || INVENTORY_ITEM_ID || '|' ||
GTIN_NUMBER || '|' || PRODUCT_UOM || '|' ||
LOCATION || '|' || ERROR_MESSAGE || '|' || ERROR_CODE OUTPUT
FROM GE_OPSM_PROD_STG
WHERE BATCH_ID = 42
AND STATUS ='E';
V_ERR_FILE UTL_FILE.FILE_TYPE := NULL;
DET_DESC VARCHAR2(100);
HEADER_DESC VARCHAR2(250);
V_TITLE VARCHAR2(100);
V_CHKERR_CNT NUMBER;
BEGIN
DBMS_OUTPUT.PUT_LINE('Inside Error function');
V_ERR_FILE:= UTL_FILE.FOPEN('/export/home/gemsadmin', 'Dataitem1.dat', 'w', 32767);
DBMS_OUTPUT.PUT_LINE('creating the data file');
FOR CUR_ERR_HEADER_REC IN CUR_ERR_HEADER LOOP
DBMS_OUTPUT.PUT_LINE('Inside Loop');
UTL_FILE.PUT_LINE(V_ERR_FILE, CUR_ERR_HEADER_REC.OUTPUT);
END LOOP;
UTL_FILE.FCLOSE(V_ERR_FILE);
EXCEPTION
WHEN OTHERS THEN
UTL_FILE.FCLOSE(V_ERR_FILE);
END ;
Getting output as
Inside Error function
its not Creating the data file in the path specified. can anyone help out inthisCUR_ERR_HEADER_REC is cursor variable for cursor CUR_ERR_HEADER.
My apologies I misread above line.Replace like below:
--UTL_FILE.PUT_LINE(V_ERR_FILE, CUR_ERR_HEADER_REC.OUTPUT);
UTL_FILE.PUT_LINE(V_ERR_FILE, 'Inserting Data here');
Are you checking the file in right path? I believe that WRITE access has been given to the user on the directory as you are not getting any exception.
Here is a sample code created for you.Please check it.
--log in as DBA if you privilege AND CREATE THE DIRECTORY
SQL> CREATE OR REPLACE DIRECTORY BI_DIR AS '/export/home/gemsadmin';--specify the path
SQL> GRANT READ, WRITE ON DIRECTORY BI_DIR TO SCOTT;
--PROCEDURE CREATED IN SCOTT SCHEMA
CREATE OR REPLACE PROCEDURE GENERATECSV
AS
ecomm_directory VARCHAR2(30) := 'BI_DIR';
l_filename VARCHAR2 (100) := 'test.csv';
V_ERR_FILE UTL_FILE.FILE_TYPE;
CURSOR CUR_ERR_HEADER IS
SELECT 'A' data FROM DUAL
UNION ALL
SELECT 'B' data FROM DUAL;
BEGIN
v_file := UTL_FILE.FOPEN (ecomm_directory, l_filename, 'W', 32767);
FOR CUR_ERR_HEADER_REC IN CUR_ERR_HEADER LOOP
UTL_FILE.PUT_LINE (V_ERR_FILE, CUR_ERR_HEADER_REC.data);
END LOOP;
UTL_FILE.FFLUSH (V_ERR_FILE);
UTL_FILE.FCLOSE (V_ERR_FILE);
EXCEPTION
WHEN utl_file.invalid_mode THEN
DBMS_OUTPUT.PUT_LINE('Error1:'||SUBSTR(SQLERRM,1,255));
WHEN utl_file.invalid_path THEN
DBMS_OUTPUT.PUT_LINE('Error1:'||SUBSTR(SQLERRM,1,255));
WHEN utl_file.invalid_filehandle THEN
DBMS_OUTPUT.PUT_LINE('Error2:'||SUBSTR(SQLERRM,1,255));
WHEN utl_file.invalid_operation THEN
DBMS_OUTPUT.PUT_LINE('Error3:'||SUBSTR(SQLERRM,1,255));
WHEN utl_file.read_error THEN
DBMS_OUTPUT.PUT_LINE('Error4:'||SUBSTR(SQLERRM,1,255));
WHEN utl_file.write_error THEN
DBMS_OUTPUT.PUT_LINE('Error5:'||SUBSTR(SQLERRM,1,255));
WHEN utl_file.internal_error THEN
DBMS_OUTPUT.PUT_LINE('Error6:'||SUBSTR(SQLERRM,1,255));
END GENERATECSV ;
/--Now you are executing the procedure from SCOTT SCHEMA
SQL> exec GENERATECSV;Regards
Biju
Edited by: biju2012 on Aug 22, 2012 4:42 AM -
UTIL_FILE Directory Creation
Is there a way to define a directory tree as usable by UTIL_FILE, and have subdirectories within that tree inherit the permissions?
For instance:
1) Define '/u01/util_area' as a node with which to use UTIL_FILE;
2) Then create a subdirectory '/u01/util_area/new_function', allowing use of UTIL_FILE (without the DBA having to specify the 'new_function' directory)The answer is NO. You have to create different directory objects in database for your different subdirectoy/directory structures.
Daljit Singh -
Util_file package error
Hi ,
I am using util_file package to spool to a csv file in a stored procedure .
when I call this procedure on my loacl machine is woking fine .
But when I call this procedure in the apps oracle database ,I get the following error:
ORA-20003: File could not be opened or operated on as requested.
ORA-06512: at "APPS.WOC_KDE_PREPROCESSOR", line 1032
Please suggest.
Thanks,Here is my code :
CREATE OR REPLACE PACKAGE BODY Woc_KDE_Preprocessor
AS
NAME: Woc_Delete_Model_Data
PURPOSE:
REVISIONS:
Ver Date Author Description
1.0 11/01/2008 gtutika 1. Preprocessor to Spool in CSV file
PROCEDURE KDEPreprocessor(p_con_program_id NUMBER)
IS
v_file UTL_FILE.FILE_TYPE;
l_count NUMBER;
l_product_model VARCHAR2(40);
c_family VARCHAR2(40);
BEGIN
DBMS_OUTPUT.ENABLE(1000000);
DBMS_OUTPUT.PUT_LINE('before');
v_file := UTL_FILE.FOPEN(location => 'EXTRACT_DIR',
filename => 'KDEPreprocessor-'||p_con_program_id||'.csv',
open_mode => 'w',
max_linesize => 32767);
DBMS_OUTPUT.PUT_LINE('after');
UTL_FILE.FCLOSE(v_file);
EXCEPTION
WHEN UTL_FILE.INVALID_PATH THEN
UTL_FILE.FCLOSE(v_file);
RAISE_APPLICATION_ERROR(-20000, 'File location is invalid.');
WHEN UTL_FILE.INVALID_MODE THEN
UTL_FILE.FCLOSE(v_file);
RAISE_APPLICATION_ERROR(-20001, 'The open_mode parameter in FOPEN is invalid.');
WHEN UTL_FILE.INVALID_FILEHANDLE THEN
UTL_FILE.FCLOSE(v_file);
RAISE_APPLICATION_ERROR(-20002, 'File handle is invalid.');
WHEN UTL_FILE.INVALID_OPERATION THEN
dbms_output.put_line('(SQLERRM');
UTL_FILE.FCLOSE(v_file);
RAISE_APPLICATION_ERROR(-20003, 'File could not be opened or operated on as requested.');
-- dbms_output.put_line('(SQLERRM');
WHEN UTL_FILE.READ_ERROR THEN
UTL_FILE.FCLOSE(v_file);
RAISE_APPLICATION_ERROR(-20004, 'Operating system error occurred during the read operation.');
WHEN UTL_FILE.WRITE_ERROR THEN
UTL_FILE.FCLOSE(v_file);
RAISE_APPLICATION_ERROR(-20005, 'Operating system error occurred during the write operation.');
WHEN UTL_FILE.INTERNAL_ERROR THEN
UTL_FILE.FCLOSE(v_file);
RAISE_APPLICATION_ERROR(-20006, 'Unspecified PL/SQL error.');
WHEN UTL_FILE.CHARSETMISMATCH THEN
UTL_FILE.FCLOSE(v_file);
RAISE_APPLICATION_ERROR(-20007, 'A file is opened using FOPEN_NCHAR, but later I/O ' ||
'operations use nonchar functions such as PUTF or GET_LINE.');
WHEN UTL_FILE.FILE_OPEN THEN
UTL_FILE.FCLOSE(v_file);
RAISE_APPLICATION_ERROR(-20008, 'The requested operation failed because the file is open.');
WHEN UTL_FILE.INVALID_MAXLINESIZE THEN
UTL_FILE.FCLOSE(v_file);
RAISE_APPLICATION_ERROR(-20009, 'The MAX_LINESIZE value for FOPEN() is invalid; it should ' ||
'be within the range 1 to 32767.');
WHEN UTL_FILE.INVALID_FILENAME THEN
UTL_FILE.FCLOSE(v_file);
RAISE_APPLICATION_ERROR(-20010, 'The filename parameter is invalid.');
WHEN UTL_FILE.ACCESS_DENIED THEN
UTL_FILE.FCLOSE(v_file);
RAISE_APPLICATION_ERROR(-20011, 'Permission to access to the file location is denied.');
WHEN UTL_FILE.INVALID_OFFSET THEN
UTL_FILE.FCLOSE(v_file);
RAISE_APPLICATION_ERROR(-20012, 'The ABSOLUTE_OFFSET parameter for FSEEK() is invalid; ' ||
'it should be greater than 0 and less than the total ' ||
'number of bytes in the file.');
WHEN UTL_FILE.DELETE_FAILED THEN
UTL_FILE.FCLOSE(v_file);
RAISE_APPLICATION_ERROR(-20013, 'The requested file delete operation failed.');
WHEN UTL_FILE.RENAME_FAILED THEN
UTL_FILE.FCLOSE(v_file);
RAISE_APPLICATION_ERROR(-20014, 'The requested file rename operation failed.');
WHEN OTHERS THEN
UTL_FILE.FCLOSE(v_file);
RAISE;
END;
END;
Show errors;
I do not get any error with local db.But on apps I get
UTL_FILE.INVALID_OPERATION error. -
Util_File package with multiple users
I am using util_file package to spool data into file . I have two users with different data . I have given access to both the users to execute util_file package .
Now how does my stored procedure knows which user's data to take .
Thanks,You are asking the wrong question. Your procedure doesn't need to know whose data to take. UTL_FILE file handles are private to the session.
Your application design does need to keep different sessions writing to different files. You can't have both sessions open the same file for writing (or if you do, the results are unpredictable, particularly if both sessions attempt to write simultaneously.
This is exactly the same as when you write to a file from a C program.
Your best options are
1) make the file name contain a username, and each user has his own file
2) write all data to a single file, and protect each write
- grab a user lock (use DBMS_LOCK package)
- open the file for append
- write to the file
- close the file
- release the lockHTH
Regards Nigel -
Replacement for UTIL_FILE exception of NO_DATA_FOUND
A few years ago, I had code that processed an exception called: UTL_FILE.NO_DATA_FOUND. In fact, I have used this in cursors as well and have found that this does not work. What is the replacement?
I am responding to my own question. Looks like it was changed to UTIL_FILE.NO_DATA_FOUND to NO_DATA_FOUND.
Sorry for the question.
Thanks -
Hi
I have created a procedure using UTL_FILE.
Before executing the procedure i created a directory as
connect system/system;
grant execute on sys.utl_file to PUBLIC;
alter system set processes=500 scope=spfile;
grant read, write on directory gams to public;
connect san/san;
create or replace directory gams as 'C:\gamsdir';
CREATE OR REPLACE PROCEDURE Empl
IS
f utl_file.file_type;
begin
f := utl_file.fopen('GAMS', 'test.txt', 'w');
utl_file.put_line(f, 'line one: some text');
utl_file.put_line(f, 'line two: more text');
utl_file.fclose(f);
end;
It gives the errors as
ERROR at line 1:
ORA-29283: invalid file operation
ORA-06512: at "SYS.UTL_FILE", line 475
ORA-29283: invalid file operation
ORA-06512: at "SAN.EMPL", line 5
ORA-06512: at line 1
How can i create the directory?
How can i create the utl_file_dir and how can i set that directory in init.ora?
what can i do?
Any Help???
Thank you> Can I create the directory in server?
I do not know.. do you have access to the server? Can you logon to the server and access the file system of that server?
> Please tell me indetail.
Assuming that you can logon to that server - simply use a Windows Command Console and the MKDIR command to create the physical directory on the server.
Or use Explorer.
Also remember to make sure that this new directory can be used by Oracle. (e.g. in Explorer right click on the folder and set the permissions for that folder to allow the Oracle windows user to read/write to this folder) -
Util_file.fgetattr 'file does not exist'
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - Production
PL/SQL Release 11.1.0.7.0 - Production
CORE 11.1.0.7.0 Production
TNS for 32-bit Windows: Version 11.1.0.7.0 - Production
NLSRTL Version 11.1.0.7.0 - Production
The file exists and thesqldr uses this file. Here is my code.
set serveroutput on
DECLARE
v_dir VARCHAR2(200); -- Directory containing the data file
v_filename VARCHAR2(100); -- Data filename
v_file_exists boolean;
v_file_length number;
v_block_size number;
BEGIN
v_dir := '\\nrs2\WEBSITE\INCOMING\STARPUBS\';
v_filename := 'PC.ORDERS';
DBMS_OUTPUT.PUT_LINE(v_filename); --shows filename
DBMS_OUTPUT.PUT_LINE(v_dir); --shows directory
utl_file.fgetattr(v_dir, v_filename, v_file_exists, v_file_length ,v_block_size );
IF v_file_exists THEN
dbms_output.put_line('File Exists');
ELSE
dbms_output.put_line('File Does Not Exist');
END IF;
END;
Output:
SQL> @C:\STARPUBS\STARPUBS\dataformats\sql\fileOrderscheck.sql
PC.ORDERS
\\nrs2\WEBSITE\INCOMING\STARPUBS\
File Does Not Exist
PL/SQL procedure successfully completed.Create or replace the directory locally works:
create or replace directory USER_DIR as 'D:\wkdir';
grant read on directory USER_DIR to USER;
However when creating a directory to another network file on another server it says file doesn't exist
create or replace directory SYS_DIR as ''\\nrs2\WEBSITE\INCOMING\STARPUBS\';
grant read on directory SYS_DIR to USER;
The nrs2 server is used as a file server and doesn't have oracle client.
So my question is can the CREATE Directory statement manage access to another file system or is it limited to only local files?
If so, is there another way of accessing these files in the nrs2 server using UTL_FILE package?
Thanks
Mike. -
Connected to Oracle Database 10g Enterprise Edition Release 10.1.0.5.0
We have this working fine on this version database
Connected to Oracle Database 11g Release 11.2.0.1.0
Created a directory 'TEST_DIR' with a path of \\1234-winxp\temp <-- This is a directory on a PC with sharing options to everyone
declare
output_file utl_file.file_type;
v_path VARCHAR2(20) := TEST_DIR';
v_filename VARCHAR2(10) := 'x.txt';
v_text VARCHAR2(32000);
BEGIN
output_file := utl_file.fopen(upper(v_path),
v_filename,
'w',
32767);
utl_file.put(output_file,
v_text);
utl_file.fclose(output_file); ....
END;when I run this code in 11g database, file gets written, everything is okay, please note that 11g database is on a windows server, the 10g is on OPEN VMS
When I run this code in 10g database, we get these errors
ORA-29283: Invalid file operation
ORA-06512: at SYS.UTL_FILE line 457
ORA-29283: invalid file operation
I've searched forum/google to no avail.
The permissions are identical in both databases.
can anyone please shed some light as to what I am missing?
thanks in advance.A file share on Windows is done using Microsoft's NTLM (New Technology Lan Manager) networking and application protocols.
For a client to access and use that share, it needs to be a NTLM client. This means the client needs to talk to a NetBIOS interface/driver that creates SMBs (Server Message Blocks) for communicating with the NTLM server.
You can not simply point an Oracle directory object to a NTLM share and expect it to magically just work.
That Oracle server needs to support NTLM. It needs to authenticate itself with the NTLM file server. It need to use SMBs to read and write files to and from that NTLM file server.
So do you have NTLM support on your OpenVMS server? Does it have some kind of NetBIOS interface that the o/s can use to talk SMB?
On Linux there is Open Source s/w called Samba that implements SMB support - and Samba clients and servers can talk to Microsoft NTLM/CIFS clients and servers.
What do you have installed and configured on your OpenVMS server to support SMB?
PS. Like a FTP client and FTP server are needed on the client and server side to talk FTP and transfer files, a Windows share needs specific s/w on the client, and specific s/w on the server, for the client and server to transfer file data using SMB (or what Microsoft arrogantly calls CIFS). -
Util_file.INVALID_OPERATION
I've got the above error when i tried the following code:
fopen(location,filename,'w');
what does the error mean???
Any help? many thanks!Hi,
I've already updated the init.ora file and restarted the database. And I'm still having the error..
I've used a mapped directory (h: drive), does that matter?
The following is my codes (it juz a simple write operation):
set serveroutput on
declare
op_file UTL_FILE.file_type;
BEGIN
op_file := utl_file.fopen('h:\output','temp.txt','W');
utl_file.fclose(op_file);
END;
null -
Read / Write Excel file using package dbms_util and util_files
hi,
i am beginner to this so please elaborate the answer more conciselythere's a ton of reading on this subject on google my friend.
http://www.google.co.uk/search?hl=en&source=hp&biw=954&bih=517&q=plsql+read+write+excel&btnG=Google+Search&aq=f&aqi=&aql=&oq=plsql+read+write+excel
and check the forum faq, there's a topic on excel in here:
SQL and PL/SQL FAQ
Edited by: smon on Mar 2, 2011 3:39 AM -
SELECt query in UNiX environment
Iam using hp unix with oracle 11g
when i try to spool 26 lack records it is giving me error
" There is not enough memory available now.
O/S Message: Broken pipe"
is there is any other way SQL commands, we can limit the SELECT query to spool specific number of times other than using
FOR LOOP.. with LIMIT cluaselogdata=`${SQLPLUS} -S username/password<< EOF
SET ECHO OFF
SET LINESIZE 2000
SET NEWPAGE 0
SET SPACE 0
SET PAGESIZE 0
SET FEEDBACK OFF
SET HEADING OFF
SET TRIMSPOOL ON
SET TAB OFF
set autoprint on
set serveroutput on
set spool on
spool ${SPOOL_FILE}
set termout off
WHENEVER SQLERROR EXIT SQL.SQLCODE
whenever oserror exit 1;
$GetQuery ==> there come's the SELECT statement which spool's 25 lakh records.
spool off
EXIT
END`
While spooling records it throws the error
There is not enough memory available now.
O/S Message: Broken pipe
i want u use spooling instead of using util_file to write each and every rows in a file
Edited by: user9080289 on Apr 29, 2010 5:04 AM -
Backup message error -SAP system is running or SAP user is connected to dat
Hello ..
when the backup started i got this message error ..before starting the backup, the shell shutdown the sap system but below message was showed
BR0262I Enter database user name[/password]:
BR0055I Start of database backup: bedvugxg.aff 2010-08-08 05.31.48
BR0484I BRBACKUP log file: /oracle/AAA/sapbackup/bedvugxg.aff
BR0477I Oracle pfile /oracle/AAA/102_64/dbs/initAAA.ora created from spfile /oracle/AAA/102_64/dbs/spfileAAA.ora
BR0068E SAP system is running or SAP user is connected to database AAA - database cannot be shut down
BR1025I Please shut down SAP system first or use the 'offline_force' option
BR0056I End of database backup: bedvugxg.aff 2010-08-08 05.31.48
BR0280I BRBACKUP time stamp: 2010-08-08 05.31.49
BR0054I BRBACKUP terminated with errors
[Major] From: "OMNISAP" Time: 08/08/10 05:31:49
BRBACKUP /usr/sap/AAA/SYS/exe/run/brbackup -t offline -d util_file -c -m all -u hpbkup/******* returned 3
i am new on this, what should i review into the db?
Regards and thanks in advance
Dma.Hello Daniela,
you try to perform an offline backup (which is a very uncommon way nowadays) and your SAP system is not down.
This is also described in the official documentation:
http://help.sap.com/saphelp_sm32/helpdata/en/0d/d309664a0c11d182b80000e829fbfe/content.htm
offline: Database backup in offline mode, in other words, the database is shut down during backup. When you select this parameter, BRBACKUP checks that no SAP system users are connected to the database. If an SAP System is active, the database is not shut down and BRBACKUP terminates the process with an error message (message number BR0068E).
Regards
Stefan
Maybe you are looking for
-
Revenue Posting to Internal Order (through VA01)
Is it possible to post the revenue to an internal order using VA01 (rel. 4.7 level 27). Thanks Karla
-
Need help for configuring integration scenario for AII
Hi, We are referring to "RFID-Enabled Outbound Processing: Configuration Guide" for transferring materials from ECC to AII through XI. So far we have been successful sending the IDOC to XI. When we display the XML message in XI using IDX5, we get the
-
Water Damaged Keybord circuit only, can i replace it? 8900 no warranty :(
Hi, I was splashed with water and my 8900 got wet while inside of the rubber cover, which traped the water. I let it dry for 4 days desassembled, when I turned it back on, operating systems works fine but the enter key is the only thing that works on
-
Iphoto calender from Germany to USA
Calender directly send to the U.S.A.? We live in Germany and would like to send our iphoto 08 Calender directly to our friends in California, U.S.A. With iphoto we can only send it to adresses here in Europe. What do we have to do?
-
Where can i find nokia driver 6.8.2?
i searched the net for a long time but i didn't find the nokia driver 6.8.2, can anyone tell me where may i find it please?! thank you!