Help regarding the calling of a oracle function from the OTL.
Hi,
I created a Oracle function like get_employee_id() which will return the employee id if the name and department exists.
If not exists it will insert the record and return the emp_id.
get_employee_id(name,department)
if name and department exists id will be returned
else record will be inserted and emp id will be returned.
emp_id is a sequence which will be triggered to auto increment.
Problem is::
Not getting a correct way to access get_employee_id() from OTL interface.
I am trying like
query << "BEGIN :3<int> := get_employee_id(:1<char[128]>,:2<char[1024]>); END;" ;
otl_stream oos(1, query.str().c_str(), db());
oos << emp_name ;
oos << emp_dept ;
while(true){
oos >> emp_id ;
if(!oos) break ;
Please let me know what is the correct way of accessing this.Thanks for the help in advance.
Sorry, I posted this on another forum. C++ Call Interface (OCCI)
Thanks,
Jagdish.
Similar Messages
-
Would like to use an alarm clock. I need the alarm clock to function from the sleep mode. A review said that MAC products will not allow a program to wake up a Mac. Is this correct ? Are there any products in the Mac store what will function from the sleep mode ? How do I check this out ?
You can set times for your computer to turn on or wake from sleep in the Energy Saver system preference pane using the Schedule... button.
-
Enable the "calling WebIDL constructors as functions" on the web
Hi,
I am developing a web application using php and python. After updating the Firefox to the latest version 30.0, some functions on my app do not work anymore. I checked the change logs of Firefox and found out this change: "Disallow calling WebIDL constructors as functions on the web" caused the issue on my tool.
So how can I fix this on the browser side since I cannot change the codes immediately right now?
Also a suggestion: Please reverse this change on the next update of this browser since this will affect my users or else I have to greatly change the codes.
ThanksPlease check out where this is fixed and the Site Compatibility list in the last portion of the bug [https://bugzilla.mozilla.org/show_bug.cgi?id=916644]
-
Call Oracle function from Stored Procedure
Hi,
I have function Which returning one number. I want to use that number in a procedure. How to call the Oracle Function from the Procedure
Create procedure
AS
Begin
Check number;
Select Function1 into check from dual;
It is giving error.
Can anyone provide me example for this.
Thanks in advancePut the Check Number; before begin
SQL> create or replace procedure abc as
2 begin
3 val number;
4 select abcd into val from dual;
5 dbms_output.put_line(val);
6 end;
7 /
Warning: Procedure created with compilation errors.
Elapsed: 00:00:00.00
SQL> show error
Errors for PROCEDURE ABC:
LINE/COL ERROR
3/5 PLS-00103: Encountered the symbol "NUMBER" when expecting one of
the following:
:= . ( @ % ;
The symbol ":=" was substituted for "NUMBER" to continue.
SQL> create or replace procedure abc as
2 val number;
3 begin
4 select abcd into val from dual;
5 dbms_output.put_line(val);
6 end;
7 /
Procedure created.
Elapsed: 00:00:00.00
SQL> exec abc;
100.22
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.00
SQL> -
Problem calling Oracle function from Access 2007 / ADO
Hopefully, I'm posting this in the correct forum. I'm also posting on an Access forum as I'm not entirely sure where the issue lies.
I'm calling an Oracle function from Access 2007 using an ADO Command object.
The function takes three input parameters and has a return value and an output parameter. The output parameter is a BLOB, and the return value is varchar2 (either "T" or "N") based on the outcome of the function.
If I pass correct values to the function, I get the following error message (errs out on the command.execute line):
Run-time error '-2147467259 (80004005)':
[Oracle][ODBC][Ora]ORA-06502: PL/SQL: numeric or value error
ORA-06512: at line 1
Here's the function:
FUNCTION GET_ITEMREV_ATTACH(P_ORGANIZATION_ID IN NUMBER,
P_INVENTORY_ITEM_ID IN NUMBER,
P_REVISION IN VARCHAR2,
X_DRAWING OUT BLOB) RETURN VARCHAR2 IS
RESULT VARCHAR2(1);
BEGIN
RESULT := 'T';
BEGIN
SELECT L.FILE_DATA
INTO X_DRAWING
FROM FND_ATTACHED_DOCUMENTS AD,
MTL_ITEM_REVISIONS_B IR,
FND_DOCUMENTS_TL D,
FND_LOBS L
WHERE AD.ENTITY_NAME = 'MTL_ITEM_REVISIONS' AND
AD.PK1_VALUE = IR.ORGANIZATION_ID AND
AD.PK2_VALUE = IR.INVENTORY_ITEM_ID AND
AD.PK3_VALUE = IR.REVISION_ID AND
AD.CATEGORY_ID = 1001216 AND
D.DOCUMENT_ID = AD.DOCUMENT_ID AND
D.LANGUAGE = 'US' AND
L.FILE_ID = D.MEDIA_ID AND
IR.ORGANIZATION_ID = P_ORGANIZATION_ID AND
IR.INVENTORY_ITEM_ID = P_INVENTORY_ITEM_ID AND
IR.REVISION = P_REVISION;
EXCEPTION
WHEN OTHERS THEN
RESULT := 'N';
END;
RETURN(RESULT);
END GET_ITEMREV_ATTACH;
Here's the VB code I'm using to call the function:
Private Sub Command8_Click()
Dim CMD As New ADODB.Command
Dim conn As ADODB.Connection
Dim Param1 As ADODB.Parameter
Dim Param2 As ADODB.Parameter
Dim Param3 As ADODB.Parameter
Dim ParamBlob As ADODB.Parameter
Dim ParamReturn As ADODB.Parameter
Set conn = New ADODB.Connection
With conn
.ConnectionString = "Driver={Oracle in OraHome92};Dbq=OAPLY;UID=***;PWD=*******"
.CursorLocation = adUseClient
.Open
End With
Set CMD = New ADODB.Command
Set CMD.ActiveConnection = conn
CMD.CommandText = "immi_attach_pub.get_itemrev_attach"
CMD.CommandType = adCmdStoredProc
Set ParamReturn = CMD.CreateParameter("RESULT", adVarChar, adParamReturnValue, 1)
CMD.Parameters.Append ParamReturn
Set Param1 = CMD.CreateParameter("P_ORGANIZATION_ID", adInteger, adParamInput, 1, 6)
CMD.Parameters.Append Param1
Set Param2 = CMD.CreateParameter("P_INVENTORY_ITEM_ID", adInteger, adParamInput, 4, 5207)
CMD.Parameters.Append Param2
Set Param3 = CMD.CreateParameter("P_REVISION", adVarChar, adParamInput, 2, "04")
CMD.Parameters.Append Param3
Set ParamBlob = CMD.CreateParameter("X_DRAWING", adLongVarBinary, adParamOutput, 200000)
CMD.Parameters.Append ParamBlob
CMD.Execute , , adExecuteNoRecords *** this is where the error occurs
conn.Close
MsgBox CMD.Parameters("RESULT")
End Sub
I've tried using different data types for the varchar2 parameters (adVarChar, adBSTR, adChar) with no difference.
If I pass a bogus value for Param3...."'04'"...the function returns "N" indicating that it actually executed something. But, when I pass the correct value "04", it returns the above mentioned error.
I can execute the function in PL/SQL just fine, so I'm thinking there's something wrong with the parameters, datatype, or other definitions on the Access side.
Does anyone have any thoughts? I'm at a dead end with this. Sorry for the long post. Thank you.I tried your code with 11107 ODBC/client/database (but with a NULL output blob for convenience sake) and got no errors.
If you're using 92 ODBC/client, you may want to try upgrading to something more current, or at least getting the latest patch(9208) to see if that helps. Since it works for me I'm guessing it may be a resolved bug in that version.
Hope it helps,
Greg -
Calling a SP or Function from Java receiving a geometry(MDSYS.SDO_GEOMETRY)
Hi there,
What I want to do is: calling a stored procedure OR function from Java with a String-variable as input and receiving a geometry (SDO_GEOMETRY).
I’m facing currently the problem of calling a stored function on oracle 11g from Java using JPA (EclipseLink), Spring 2.5.6 returning an MDSYS.SDO_GEOMETRY object.
I’ve tried to call a stored procedure with MDSYS.SDO_GEOMETRY as an output parameter instead, but with no success.
The function’s signature looks like this:
CREATE or REPLACE
FUNCTION GET_GEO_BRD_FUNCTION(p_geo_brd_id IN VARCHAR2) RETURN MDSYS.SDO_GEOMETRY AS
sdo_geom MDSYS.SDO_GEOMETRY := null;
BEGIN
/* do some fancy stuff on the database side */
SELECT sp_geom
INTO sdo_geom
FROM geo_brd WHERE id = p_geo_brd_id;
RETURN sdo_geom;
END;
The calling code looks like this:
MyClass extends JpaDaoSupport{
/** logger */
protected static final ILogger LOG = LogFactory.getLogger(MyClass.class);
* {@inheritDoc}
* @see com.example.MyClass#calculateGeometry(java.lang.String)
@Override
public JGeometry calculateGeometry(final String id) {
JGeometry geometry = null;
final JpaCallback action = new JpaCallback() {
@Override
public Object doInJpa(final EntityManager em) throws PersistenceException {
final Session session = JpaHelper.getEntityManager(em).getActiveSession();
final StoredFunctionCall functionCall = new StoredFunctionCall();
functionCall.setProcedureName("GET_GEO_BRD_FUNCTION");
functionCall.addNamedArgument("p_geo_brd_id");
functionCall.setResult("sdo_geom", Oracle.sql.STRUCT.class);
final ValueReadQuery query = new ValueReadQuery();
query.setCall(functionCall);
query.addArgument("p_geo_brd_id");
final ArrayList args = new ArrayList();
args.add("2e531e62-2105-4522-978a-ab8baf19e273");// hardcoded for test
final Object result = session.executeQuery(query, args);
return result;
final STRUCT result = (STRUCT) this.getJpaTemplate().execute(action);
try {
geometry = JGeometry.load(result);
} catch (final SQLException e) {
MyClass.LOG.error("Error loading JGeometry from STRUCT.", e);
return null;
return geometry;
And when I execute the query I get the following error:
Internal Exception: java.sql.SQLException: ORA-06550: Row 1, Column 13:
PLS-00382: expression is of wrong type
ORA-06550: Row 1, Column 7:
PL/SQL: Statement ignored
Error Code: 6550
Call: BEGIN ? := GET_GEO_BRD_FUNCTION(p_geo_brd_id=>?); END;
bind => [=> sdo_geom, 2e531e62-2105-4522-978a-ab8baf19e273]
Query: ValueReadQuery()
So I thought may be let's try it with a stored procedure instead...
The procedure looks like this:
CREATE or REPLACE
PROCEDURE GET_GEO_BRD_PROCEDURE(p_geo_brd_id IN VARCHAR2, sdo_geom OUT MDSYS.SDO_GEOMETRY) AS
BEGIN
/* do some fancy stuff on the database side */
SELECT sp_geom
INTO sdo_geom
from geo_brd where id = p_geo_brd_id;
END;
The calling Java code in case of the stored procedure looks like this (only the content of the JPACallback has changed):
@Override
public Object doInJpa(final EntityManager em) throws PersistenceException {
final Session session = JpaHelper.getEntityManager(em).getActiveSession();
final StoredProcedureCall spCall = new StoredProcedureCall();
spCall.setProcedureName("GET_GEO_BRD_PROCEDURE");
spCall.addNamedArgument("p_geo_brd_id", "p_geo_brd_id", String.class);
spCall.addNamedOutputArgument("sdo_geom", "sdo_geom", OracleTypes.STRUCT);
final ValueReadQuery query = new ValueReadQuery();
query.setCall(spCall);
query.addArgument("p_geo_brd_id"); // input
final List args = new ArrayList();
args.add("2e531e62-2105-4522-978a-ab8baf19e273");// hardcoded for test
final Object result = session.executeQuery(query, args);
return result;
And when I execute the query I get the following error:
java.sql.SQLException: ORA-06550: Row 1, Column 13:
PLS-00306: wrong number or types of arguments in call to 'GET_GEO_BRD_PROCEDURE'
ORA-06550: Row 1, Column 7:
PL/SQL: Statement ignored
So both exceptions look quite similar.
I guess in both cases the exception description leads to the assumption, that the wrong type for the return value / output parameter is used…
So - how can a receive a MDSYS_SDO_GEOMETRY object from a stored procedure or stored function in Java ?
What is wrong in the Java code?
Thank you in advance for any suggestions!
Yours,
Chris
Edited by: user3938161 on 20.12.2011 07:46
Edited by: user3938161 on Dec 20, 2011 8:06 AM: added variable declaration of JGeometry geometry in source codeThanks, that did the trick! ;-)
Here is now the code for stored procedure and function for anybody else encountering the same troubles... (be aware of the parameter order and/or naming!)
Code for stored functions:
final JpaCallback action = new JpaCallback() {
@Override
public Object doInJpa(final EntityManager em) throws PersistenceException {
final Session session = JpaHelper.getEntityManager(em).getActiveSession();
* Using CallableStatement for stored functions
STRUCT st = null;
CallableStatement cs = null;
final DatabaseLogin login = session.getLogin();
final Connection _conn = (Connection) login.connectToDatasource(session.getDatasourceLogin().buildAccessor(), session);
try {
try {
cs = _conn.prepareCall("{? = call GET_GEO_BRD_FUNCTION(?)}");
cs.registerOutParameter(1, OracleTypes.STRUCT, "MDSYS.SDO_GEOMETRY");
cs.setString(2, "2e531e62-2105-4522-978a-ab8baf19e273");//TODO: hardcoded for test
cs.execute();
} catch (final SQLException e) {
MyClass.LOG.error("An exception occured calling the stored procedure", e);
if (cs != null) {
//reading geometry from the database
try {
st = (STRUCT) cs.getObject(1);
} catch (final SQLException e) {
MyClass.LOG.error("An exception occured converting the query result to oracle.sql.STRUCT", e);
} finally {
try {
if (_conn != null && !_conn.isClosed()) {
_conn.close();
} catch (final SQLException e) {
MyClass.LOG.error("An exception occured on closing the database connection.", e);
return st;
final STRUCT result = (STRUCT) this.getJpaTemplate().execute(action);
The code for stored procedure solution:
final JpaCallback action = new JpaCallback() {
@Override
public Object doInJpa(final EntityManager em) throws PersistenceException {
final Session session = JpaHelper.getEntityManager(em).getActiveSession();
* Using CallableStatement for stored procedure
STRUCT st = null;
CallableStatement cs = null;
final DatabaseLogin login = session.getLogin();
final Connection _conn = (Connection) login.connectToDatasource(session.getDatasourceLogin().buildAccessor(), session);
try {
try {
cs = _conn.prepareCall("{call GET_GEO_BRD_PROCEDURE(?,?)}");
cs.setString("p_geo_brd_id", "2e531e62-2105-4522-978a-ab8baf19e273");
cs.registerOutParameter("sdo_geom", OracleTypes.STRUCT, "MDSYS.SDO_GEOMETRY");
cs.execute();
} catch (final SQLException e) {
MyClass.LOG.error("An exception occured calling the stored procedure", e);
if (cs != null) {
//reading geometry from the database
try {
st = (STRUCT) cs.getObject("sdo_geom");
} catch (final SQLException e) {
MyClass.LOG.error("An exception occured converting the query result to oracle.sql.STRUCT", e);
} finally {
try {
if (_conn != null && !_conn.isClosed()) {
_conn.close();
} catch (final SQLException e) {
MyClass.LOG.error("An exception occured on closing the database connection.", e);
return st;
final STRUCT result = (STRUCT) this.getJpaTemplate().execute(action); -
Calling a PL/SQL function from java
I would like to call a pl/sql function from java. My pl/sql function is taking arrays of records as parameters. How do i proceed? Which specific oracle packages do I have to import?
Please send an example.
TIA,
Darko GuberinaDocumentation here: http://download-uk.oracle.com/docs/cd/B14117_01/java.101/b10983/datamap.htm#sthref185
says JPublisher can publish records too.
But when I change the example given at http://download-uk.oracle.com/docs/cd/B14117_01/java.101/b10983/datamap.htm#sthref190 as following:
PACKAGE "COMPANY" AS
type emp_rec is record (empno number, ename varchar2(10));
type emp_list is varray(5) of emp_rec;
type factory is record (
name varchar(10),
emps emp_list
function get_factory(p_name varchar) return factory;
END;
then I see <unknown type or type not found> at sql or java files generated. Any ideas? -
Calling an external C function from a C file in JNI
Hello,
I am trying to call an external C function, from a C file which is being called by a Java file. I am getting an unresolved symbol error. I have tried many things like, making the external C function in the format of JNI, etc, etc. It is still not working. I think it has something to do with linking the two C files. If anyone can please answer this, it would greatly help me. here is the code:
HelloWorld.c:
#include <jni.h>
#include <stdio.h>
#include "MyOldHello.h"
#include "HelloWorld.h"
JNIEXPORT void JNICALL
Java_HelloWorld_print(JNIEnv *env, jobject obj)
helloPrint();
return;
HelloWorld.java:
class HelloWorld
private native void print();
public static void main(String[] args)
new HelloWorld().print();
static
System.loadLibrary("HelloWorld");
System.loadLibrary("MyOldHello");
MyOldHello.c:
#include <jni.h>
#include <stdio.h>
#include "MyOldHello.h"
void helloPrint()
printf("\nHello World!\n");
MyOldHello.h:
void helloPrint();
Now i use the Visual C++ command prompt to compile this by saying:
javac HelloWorld.java
javah -jni HelloWorld
cl -Ic:\Java\jdk1.6.0_20\include -Ic:\Java\jdk1.6.0_20\include\win32 -MD -LD HelloWorld.c -FeHelloWorld.dll
and now it gives me the error saying that there is an unresolved external symbol, which is the call to helloPrint in the file HelloWorld.
If anyone knows how to solve this, or how to call external C functions from a C file that is being called from a Java file using JNI, please respond.
Thanks
NickHi,
In your post on velocity review, you did not compile MyOldHello.c. You compiled a C file that included the header file for it and called a method defined in the header. The linker is never going to be able to find the code for this if you do not include the object file for this.
Try this. You will also have to add in any JNI libraries you need to link against but I am sure you could work that out.
cl /c MyOldHello.c
cl /c -Ic:\Java\jdk1.6.0_20\include -Ic:\Java\jdk1.6.0_20\include\win32 -MD HelloWorld.c
cl /LD MyOldHello.obj HelloWorld.obj /FeHelloWorld.dll
[http://msdn.microsoft.com/en-us/library/f35ctcxw(VS.80).aspx]
Cheers,
Shane -
Trying to call a root level function from within a loaded swf
I'm not very familiar with AS3... I'm trying to have a loaded swf file call a function from the parent to unload itself when it comes to the end (on the timeline, not as a button). I'm assuming I need to be calling the function (that is used for the close button) from the loaded swf (perhaps I'm mistaken though?).
Here's the code from one of my buttons that loads an swf. I'm guessing I need to call the closeSWF function from the timeline of my loaded movie but having no luck figuring out how to do that.
Any help would be appreciated.
// 01 ------------------------------------------------------
function loadWeaving(ev:MouseEvent):void {
// load SWF
var movieClip:MovieClip = new holder_mc;
//add it to the stage
addChild(holderSWF);
holderSWF.x=0;
holderSWF.y=0;
var requestEN:URLRequest = new URLRequest("WhatIsWeaving_Eng.swf"); // english
holderSWF.load(requestEN);
close_bt.addEventListener(MouseEvent.CLICK, closeSWF);
function closeSWF(infoObject:Object):void {
trace("close SWF");
removeChild(holderSWF);
// reset switch
close_bt.visible = false;
showAllButtons();
infoObject.currentTarget.removeEventListener(infoObject.type, closeSWF);
setChildIndex(close_bt,numChildren - 1);
close_bt.visible = true;
hideAllButtons();
// - start timer last
myTimer.addEventListener(TimerEvent.TIMER, closeSWF);You're exactly right. If you attach an event listener to the Loader before you add it to the stage, you can then use event.currentTarget to refer to the loader. And this is definitely the better way to do it if you're planning to use the loaded swf from multiple places or could ever need to do this in the future.
So:
protected function initLoader():void {
var loader:Loader = new Loader();
loader.addEventListener('closeMe', closeLoader);
loader.load(new URLRequest(...));
addChild(loader);
protected function closeLoader(e:Event):void {
var loader:Loader = e.currentTarget as Loader;
if (loader) {
loader.unloadAnstop(true);
loader.removeEventListener('closeMe', closeLoader);
removeChild(loader); -
Calling a pure C function from JNI method
Is it posible to call a pure C function from a JNI method.?
I am communicating with an external device whose API is written in C language.
Would it work this way
If I declare empty native methods in Java and those methods in C call pure C methods?
Thank You...Hello,
I have a similar problem and I posted it here http://www.velocityreviews.com/forums/t724826-jni-calling-an-outside-function-in-the-c-file-which-is-being-called-by-the-java-file.html. If you can answer the question, it would greatly help me.
Thanks
Nick -
The scroll function from the pad/mouse does not work for the other tabs when a PDF file is opened.
Hi NSHS,
Have you checked to see if your PDF add-on is up to date? You should take a look at the [[Opening PDF files within Firefox]] Knowledge Base article. There is a lot of good information in there. You should try both of the suggested PDF add-ons to see if that fixes the issue.
Hopefully this helps! -
Without calling stored procedure or functions from database
Hi,
I am using Jdeveloper 11.1.1.5.0.
=>How to do PL/SQL procedures and functions in ADF without calling stored procedure or function from DB?S, PL/SQL procedures and functions are done in Application Module class or in managed bean..By calling the stored procedures or functions from DB.
But I am asking how to do if DB doesn't have any procedures,triggers and functions. -
Pass string array to Oracle function from Web page
Hi. I need to pass a two-dimensional array of string values to an Oracle function from an ASP.NET page. Is there an efficient way to accomplish this? I'm thinking I'll have to create a long string with special delimiters,
|12345^4.000|67890^3.670|.....
I'd parse the string on Oracle and break it into its component parts. In this example, each "record" is separated by the bar "|" and each field is separated by the up arrow "^". So each record has two fields.
Is this a good approach? Your input is much appreciated. Thanks.In PL/SQL, it is easy enough to define a record type with two attributes and declare a store procedure that takes in an array of those parameters. I know that from Java it is possible to create and pass in such an array. I would suspect that the same is possible from .Net but I am not a competent .Net developer.
Justin -
Removing Aggregate Functions from the Action Menu
Hi People,
I'd like to remove the following aggregate functions from the action menu on a report, if possible:
1. Minimum
2. Maximum
3. Median
Is this actually possible, or am I stuck with them? I've had a good sniff around, but can't find any way to remove them so far.
Cheers.
JamesOk, first click on your name in the menu bar. Then click on "Users&Groups Prefrences..." You should see a little house icon next to 'Login Options" under the menu where all user accounts are displayed. Click on it. Where it says "Show fast user switching menu as" and next to it a dropdown saying "Full Name" change that to icon. After you have done that, the name should be replaced with an icon. Hope this helped.
-
Run Oracle reports from the FORM builder
Hello All,
We have Oracle Form base application running on the window OS.
(Form version is 9.0.4.1.0)
Our Database is installed on Linux box (DB version: 10.1.0.3.0)
I need to run different Oracle reports from the form based application or from the form builder. (Report Builder 9.0.4.1.0)
Any feed back will be appreciated.
Regards,
Dtry this
Run_product(REPORTS,' <path to the report>', ASYNCHRONOUS, RUNTIME, FILESYSTEM,' ',NULL);
in some event ( whichever event you want your report to show up)
Maybe you are looking for
-
Assigning a function code to radio button in 4.5B
Ive a requirement wherein I need to trigger the PAI event in a module pool program when I select a particular radiobutton in a group and do some processing subsequently. For this I need to assign a function code to the radiobutton group. But the fun
-
Move group of pages from one InDesign file to another InDesign File using VB.Script
Dear team, I am trying to move group of InDesign pages from one indesign file to another indesign file using vb.script. I have written the code like Dim Pages=IndDoc.Pages Dim Mytype=TypeName(Pages) Pages.Move(InDesign.idLocationOptions.idBefore,IndD
-
Hi Experts, I am upgrading my system to EHP5. While running phase MAIN_SHDRUN/ACT_UPG the upgrade stops and does not proceeds further. Below are the logs generated: >> 2011/02/09 08:44:24 START OF PHASE MAIN_SHDRUN/ACT_UPG running G:\EHPI\abap\exe\t
-
Very slow Undo/Redo Process !
Hi, Upgraded to Logic 10.1 yesterday, on a Brand new Mac Pro ( 2015 ), 32GB Memory, 1 TB SSD, Everything seems to be running smoothly, EXCEPT ...!!! ( Capital Letters ) It's taking 15 seconds MINIMUM to Undo or Redo, Sometimes even a little longer !!
-
Is there a way to retrieve a deleted message thread
I accidentally deleted an entire message thread when I was in my messages. I must've done the edit, delete method because I have searched and searched and the thread is no longer there. I have an iPhone 4s with the 7.1 iOS and it automatically does t