Example of calling PL/SQL func in JavaScript
I need to validate a form element based on existing database value and give an alert. Does anyone know how to capture the value returned by a PL/SQL func in JavaScript variable? Thanks.
hi,
in the PL/SQL block 'before form displayed'
insert the code:-
htp.p('{script}var myVar = "' | | myPLSQLfunc | | '";{script}');
(I have replaced the less-than and greater-than symbols with {} so that they will show in the browser)
The variable myVar will now be available to JavaScript in the page and will have the value returned by myPLSQLfunc.
Regards Michael.
Similar Messages
-
Calling PL SQL in a Javascript function
I've written a function :
function removeCouvent (id)
//var empSelectObj = document.getElementById(empSelect);
var ajaxRequest = new
htmldb_Get(null,&APP_ID.,'APPLICATION_PROCESS=Del_couvent',0);
ajaxRequest.add('CodeCouv',id);
ajaxResult = ajaxRequest.get();
if(ajaxResult)
alert("test1");
else
alert("test2");
ajaxRequest = null;
with the pl / sql app process (Del_couvent) :
BEGIN
DELETE FROM COUVENT WHERE CV_CODE= :CodeCouv;
END;
It does nothing, no deletes, any idea ? -
Call PL/SQL stored function in javascript
HI All
i have a stored function similar to this:
CREATE OR REPLACE FUNCTION GET_FULL_NAME(V_USER_NAME IN VARCHAR2)
RETURN VARCHAR2
AS
V_FULL_NAME USERS.FULL_NAME%TYPE;
BEGIN
SELECT FULL_NAME
INTO V_FULL_NAME
FROM USERS
WHERE USER_NAME = V_USER_NAME;
RETURN V_FULL_NAME;
EXCEPTION WHEN OTHERS THEN
RETURN (NULL);
END;can i call this function in a javascript function?
<script type="text/javascript">
function alert_fullname()
var str full_name = get_full_name("EMP001");
alert(full_name);
</script>i know this can be done in other way, but what i want to know is can i use a stored PL/SQL function/procedure to be called inside a javascript?
thanks in advance for any enlightenment,
BROKENHi Broken,
No, you can't do that directly within javascript.
You can, however, use Ajax to make the call back to a page process that retrieves the fullname value and returns it to your page.
Regards
Andy -
Calling PL/SQL from JavaScript
Hi,
I was wondering whether anyone has been able to successfully call a PL/SQL function from JavaScript and have the PL/SQL function return a result to the calling JavaScript function.
What I am wanting to do is, depending on what the value returned from the PL/SQL function is, either enable or disable a button on a web form. This would be done before displaying the form. We are current using 9iAS 1.0.2.2.2a and running Portal 3.0.9.8.0
Any ideas would be appreciated.
Regards,
Scott.Hi,
We have managed to create a solution to our problem. I have the copied in the code just incase other people are interested in what we did. We did this through Oracle Portal using the Additional PL/SQL Code section. Please see below.
is_user() is a PL/SQL function that checks whether the logged in user is a company user or client. It returns a VARCHAR2 of either "TRUE" or "FALSE".
... before displaying the form.
declare
lv_is_user varchar2(50) := is_user(portal30.wwctx_api.get_user);
begin
htp.p('<script language="JavaScript1.3">
function getItemObj(form,target)
var objname;
//Loop through all elements in the form
for(var j = 0; j < form.length; j++)
objname = form.elements[j].name.split(".");
if (objname[2] == target)
return form.elements[j];
function disableButton(form, btnName)
var isUser = "' || lv_is_user || '" ;
if (isUser == "FALSE")
var btnObj = getItemObj(form, btnName);
btnObj.disabled = true;
</script>');
END;
... after displaying the form.
htp.p('
<SCRIPT>
disableButton(document.forms[0], "FORM_BTN");
</SCRIPT> -
Access PL/SQL Objects from JavaScript
I have following Problem:
I want to have access to a pl/sql object from javascript.
for example:
i have a procedure with a parameter called test from Type Test.
PROCEDURE toTest (
test Test)
IS
BEGIN
htp.script('here i want the value of test', 'javascript');
would be really great if somebody can help me fast.
thanks a lot
holgerI think it might have something to do with htmldb_Get
Hope that clue gets you somewhere. I would love to see a working example of this for 4.02 if anyone actually has one.
Regarding dynamic actions there's a severe limit on the number of them I believe.29? Which is one reason I avoid them and
just do things in javascript. Personally I think javascript is actually easier to understand because one does not have to
divide an actiivity up into several pieces. But that might just be specific to my brain, I don't know. -
Call an sql insert statement in xml publisher
Hi to all,
i've a question as regard xml publisher.
Sorry but i don't have a lot of time to look around.
This features is quite important and probably would determine if we will use this
product or not.
Is possible to call an sql statement when the output is generated?
example: a user call a report with some par to filter the output (some select list / text, ecc..)
Or generally can i call use a pl/sql block instead of pl/sql query to populate and at
the same time to write other data to keep track of the printing / generation of the
documents X user?
Otherwise, is xml publisher writing this info in some system table of xml publ?
Note: i use most of all pl/sql and htmldb and i don't want to use other programming languages until this app is finished.
Thank you very very much.Hi Marcello
I seem to remember from other threads that you are assessing the enterprise edition of XMLP right?
If you use the data templates to define how the data should be extracted then you can call a plsql pkg after the fetch to update/insert to your hearts content.
Otherwise you could use the APIs instead of the UI to do the same or even build an extension to the RTF templates to make the sql call ... we do not document this at the moment but its possible.
Regards
Tim -
How to call a SQL function from an XSL expression
Hi
In R12, in Payroll Deposit adivce/Check writer, We need to sort the earnings tag <AC_Earnings> in to two different categories as regular and other earnings. In the DB and form level of element defintiion we have a DFF which differentiates between the two kinds of earnings. But the seeded XML that is gerneated by the check writer does not have this field.
The seeded template displays all the earnings in one column. How can we achieve this in the template without modifying the seeded XML.
The one approach i have is to write a function and based on the return value sort the data. For this I need to know :
1) How to call a SQL function from an XSL expression that is allowed in BI template.
If anyone ahs faced similar requirements please share your approach.
Thanks
SrimathiThank u..
but i'd seen that link wen i searched in google..
Is it possible without using any 3rd party JARs and all?
and more importantly plz tell me what should be preferred way to call a javascript function?
Do it using addLoadEvent() or Windows.Load etc
OR
Call it thru Xsl? (I donno how to do dis)
Thanks in Advance..
Edited by: ranjjose on Jun 3, 2008 8:21 AM -
What is the best way to call a pageflow action from JavaScript?
What is the best way to call a pageflow action from JavaScript?
Thanks,
JohnJohn,
How would I do this from a grid??? Unfortunately there are no JavaScript attributes
on any of the grid tags that I can see.
Thanks,
John
"John H" <[email protected]> wrote:
>
Thanks John!
"John Rohrlich" <[email protected]> wrote:
John,
If you want to put up a confirm dialog before calling an action from
an
anchor it is done as follows.
Here is an example from code of mine that deletes a customer order,if
the
user confirms the delete. I pass the order id as a parameter.
- john
Here is the JavaScript -
function confirmDelete() {
if(confirm('Continue with order delete?'))
return true;
else
return false;
Here is a sample anchor tag -
<netui:anchor action="requestToDeleteOrder" onClick="return
confirmDelete(); return false;">
Delete
<netui:parameter name="orderId" value="{container.item.orderId}"/>
</netui:anchor>
"John H" <[email protected]> wrote in message
news:402138f5$[email protected]..
Thanks for the replies. I figured it was going to require buildingmy own
url
to call the action. I had hoped there was an easier way to do it.Rich,
the
reason I want to do this is because I want to call the JavaScript
function
confirm()
when a user clicks on a link (in a repeater/grid) to drop a record,I only
want
to call the drop action if the user confirms the drop. Maybe thereis a
better
way to do what I am trying to do??? I really appreciate any help
you
guys
can
give me on this, I am pretty new to this sort of stuff.
Thanks,
John
"Rich Kucera" <[email protected]> wrote:
"John H" <[email protected]> wrote:
What is the best way to call a pageflow action from JavaScript?
Thanks,
JohnTry figuring out the URL to the pageflow action, create a hidden
form
in the
page, then use JS to submit the form. Why would you want to though,
isn't
the server going to want to send you to the next page? -
How to call pl/sql function from element values
EBS 11.5.10.2
XMLP 5.6.3
Hello,
I noticed that the output of the rdf-to-data template conversion process makes use of an undocumented feature of data templates, and I would like to get input from experts as to which situations this feature is usable.
The closest thing I can find in the documentation is a sample in the user guide. There is a "General Ledger Journals Data Template Example" that has a <dataStructure> section that contains <element> nodes which are NOT children of a <group> node. I can't find any explanation of this in the user guide.
I've noticed from converted templates that in these un-grouped elements you can make calls to PL/SQL functions in the "value" attribute, like this:
<dataStructure>
<group name="G_LINES" source="Q_MAIN">
<element name="Line_Num" value="Line_Num"/>
</group>
<element name="C_CALCULATED_VALUE" dataType="number" value="XX_CUSTOMPROCS.SOME_FUNCTION"/>
</dataStructure>Has anyone had any success being able to call PL/SQL functions from grouped elements? Whenever I try, it doesn't seem to work.
When I try something like this:
<dataStructure>
<group name="G_LINES" source="Q_MAIN">
<element name="Line_Num" value="Line_Num"/>
<element name="some_calculation" value="XX_CUSTOMPROCS.SOME_FUNCTION"/>
<element name="some_calculation_b" value="XX_CUSTOMPROCS.SOME_FUNCTION_B(:Line_Num)"/>
</group>
<element name="C_CALCULATED_VALUE" dataType="number" value="XX_CUSTOMPROCS.SOME_FUNCTION"/>
</dataStructure>The <SOME_CALCULATION/> and <SOME_CALCULATION_B/> nodes come out empty in the output data xml file, but <C_CALCULATED_VALUE> would have a value as desired.ah - perfect. That makes sense. Thank you for the response!
But what about when we need to pass parameters to those functions whos values are the results of aggregate element values?
This happens a lot in the converted data templates, where pl/sql package functions are meant to replace formula columns from the original Oracle Report. Take this example from the conversion of ARXAGMW.rdf (Aging Report, 7 Buckets):
(note the function call in the value of "Set_Percent_Inv_Inv" is using aggregate results from subgroups)
<group name="G_INV_INV" dataType="varchar2" source="Q_Invoice">
<element name="Total_Inv_Inv_Amt" function="sum" dataType="number" value="G_Invoice.C_Amt_Due_Rem_Inv"/>
<element name="Total_Inv_Inv_B0" function="sum" dataType="number" value="G_Invoice.C_Inv_B0"/>
<element name="Total_Inv_Inv_B1" function="sum" dataType="number" value="G_Invoice.C_Inv_B1"/>
<element name="Total_Inv_Inv_B2" function="sum" dataType="number" value="G_Invoice.C_Inv_B2"/>
<element name="Total_Inv_Inv_B3" function="sum" dataType="number" value="G_Invoice.C_Inv_B3"/>
<element name="Total_Inv_Inv_B4" function="sum" dataType="number" value="G_Invoice.C_Inv_B4"/>
<element name="Total_Inv_Inv_B5" function="sum" dataType="number" value="G_Invoice.C_Inv_B5"/>
<element name="Total_Inv_Inv_B6" function="sum" dataType="number" value="G_Invoice.C_Inv_B6"/>
<element name="Set_Percent_Inv_Inv" dataType="number" value="XX_CUSTOMPROCS.XXC_ARXAGMW.set_percent_inv_invformula(:Total_Inv_Inv_Amt, :Total_Inv_Inv_B0, :Total_Inv_Inv_B1, :Total_Inv_Inv_B2, :Total_Inv_Inv_B3, :Total_Inv_Inv_B4, :Total_Inv_Inv_B5, :Total_Inv_Inv_B6)"/>
<element name="Sum_Percent_B0_Inv" dataType="number" value="XX_CUSTOMPROCS.XXC_ARXAGMW.Sum_Percent_B0_Inv_p"/>
<element name="Sum_Percent_B1_Inv" dataType="number" value="XX_CUSTOMPROCS.XXC_ARXAGMW.Sum_Percent_B1_Inv_p"/>
<element name="Sum_Percent_B2_Inv" dataType="number" value="XX_CUSTOMPROCS.XXC_ARXAGMW.Sum_Percent_B2_Inv_p"/>
<element name="Sum_Percent_B3_Inv" dataType="number" value="XX_CUSTOMPROCS.XXC_ARXAGMW.Sum_Percent_B3_Inv_p"/>
<element name="Sum_Percent_B4_Inv" dataType="number" value="XX_CUSTOMPROCS.XXC_ARXAGMW.Sum_Percent_B4_Inv_p"/>
<element name="Sum_Percent_B5_Inv" dataType="number" value="XX_CUSTOMPROCS.XXC_ARXAGMW.Sum_Percent_B5_Inv_p"/>
<element name="Sum_Percent_B6_Inv" dataType="number" value="XX_CUSTOMPROCS.XXC_ARXAGMW.Sum_Percent_B6_Inv_p"/>
<group name="G_Cust_Inv" dataType="varchar2" source="Q_Invoice">
<group name="G_Site_Inv" dataType="varchar2" source="Q_Invoice">
<group name="G_1" dataType="varchar2" source="Q_Invoice">
<group name="G_Invoice" dataType="varchar2" source="Q_Invoice">
<element name="C_Amt_Due_Rem_Inv" dataType="number" value="C_Amt_Due_Rem_Inv"/>
<element name="C_Inv_B0" dataType="number" value="C_Inv_B0"/>
<element name="C_Inv_B1" dataType="number" value="C_Inv_B1"/>
<element name="C_Inv_B2" dataType="number" value="C_Inv_B2"/>
<element name="C_Inv_B3" dataType="number" value="C_Inv_B3"/>
<element name="C_Inv_B4" dataType="number" value="C_Inv_B4"/>
<element name="C_Inv_B5" dataType="number" value="C_Inv_B5"/>
<element name="C_Inv_B6" dataType="number" value="C_Inv_B6"/>
</group>
</group>
</group>
</group>
</group>
...All of these groups and sub-groups are based on one single query, so I am not sure how I would move the function call into the query without changing the results of the function.
In the example above, elements Sum_Percent_B0_Inv through Sum_Percent_B6_Inv grab the results of the calculation done in set_percent_inv_invformula. Here is the essence of that function:
sum_percent_b0_inv := ROUND ((total_inv_inv_b0 / total_inv_inv_amt) * 100, 2);
sum_percent_b1_inv := ROUND ((total_inv_inv_b1 / total_inv_inv_amt) * 100, 2);
sum_percent_b2_inv := ROUND ((total_inv_inv_b2 / total_inv_inv_amt) * 100, 2);
sum_percent_b3_inv := ROUND ((total_inv_inv_b3 / total_inv_inv_amt) * 100, 2);
sum_percent_b4_inv := ROUND ((total_inv_inv_b4 / total_inv_inv_amt) * 100, 2);
sum_percent_b5_inv := ROUND ((total_inv_inv_b5 / total_inv_inv_amt) * 100, 2);
sum_percent_b6_inv := ROUND ((total_inv_inv_b6 / total_inv_inv_amt) * 100, 2);The only solution I can think of is to have separate queries, one for each subgroup, that do the "sum" in sql; but that seems terribly inefficient. -
Calling PL/SQL procedures from a Windows CMD script
Hello,
I am writing a Windows CMD script. From this script I want to call procedures from a PL/SQL package which selects, inserts or deletes rows from the database.
How do I go about logging into the database from the cmd script and calling PL/SQL procedures from there?
Does anyone have any examples of such scripts? Thanks in advance.No, it is not a job that needs to be scheduled.
The script will be used when needed to select info from a certain table and also to insert or delete certain info into/from this table (so, it is just simple sql statements which I have put into a package), but I'm sure how to log into the database and execute the procedures from this package in a cmd script. -
Calling PL/SQL function from OCI?
Hi,
How do I execute a PL/SQL function from OCI?
My test function:
CREATE OR REPLACE FUNCTION GetNodeQuery(TypeId IN INTEGER) RETURN VARCHAR2 IS
Query VARCHAR2(500);
BEGIN
Query := 'Select * from Logical_Name';
RETURN Query;
END GetNodeQuery;
char SQL[16];
strcpy(SQL, "GetNodeQuery(1)");
char ColumnVariable[500];
int VariableSize = 500;
OCIStmtPrepare(qHandle, hError, SQL, (ub4)strlen(SQL),
(ub4)OCI_NTV_SYNTAX, (ub4)OCI_DEFAULT);
OCIDefineByPos(qHandle, &pDefine, hError, 1,
(dvoid*)ColumnVariable, (sb4)VariableSize,
1,(dvoid*)0, (ub2*)0, (ub2*)0,
OCI_DEFAULT);
OCIStmtExecute(svchp, qHandle, hError, (ub4)1, (ub4)0,
(CONST OCISnapshot *)NULL, (OCISnapshot*)NULL,
OCI_DEFAULT);
On the Execute I get an error saying that ORA-00900: invalid SQL statement
Any Help would be appreciated.
Thank You,
Scott Metzger
nullOk, I made a mistake the
select GetNodeQuery(1) from dual
only works with a simple function. My real life function has a cursor via DBMS_SQL.
I presume I would need to pass the following in my OCIStmtPrepare call:
Define
tmp Varchar2[256];
begin
tmp := GetNodeQuery(1);
end;
Now how do I get the value of tmp out?
I couldn't find any examples for calling functions from OCI. If you know of some could you post the url or send them to me?
Thanks,
*:> Scott
[email protected]
<BLOCKQUOTE><font size="1" face="Verdana, Arial">quote:</font><HR>Originally posted by Tiago Nodari ([email protected]):
you need to modify the sqlstatement to look something like this...
begin
GetNodeQuery(1)
end;
look into the OCI documentation, there are various examples of how to do it, including, binding and defining variables...
<HR></BLOCKQUOTE>
null -
Calling PL/SQL Procedures from Java
Hello,
I want to know, if it is possible to call PL/SQL Procedures from
SQLJ(which uses htp.print from the Package web toolkit ).
Though, it is possible to call normal procedures but if I want
to call PL/SQL procedures with htp.print then I get I error.
For example:
#sql{Call html_test()};
Can you give me a advice?
Your help is much appreciated!
M|llerOracle's htp packages are develop to be work with
mod_plsql/OAS/OWS webserver.
If you are trying to use htp packages first need to instanciate
some enviroment vars for htp packages, for example first you has
to call to owa.initialize procedure, populate owa.cgi array and
so on.
If you need more information about how this toolkit works you
could get the source of DB Prism at
http://www.plenix.com/dbprism/ this open source framework
includes backward compatibility with mod_plsql application and
then includes settings of this values from Java code.
Best regards, Marcelo. -
How to call jpf controller method from javascript
Can any one help me how to call pageflow controller method from JavaScript.\
Thanks.Accessing a particular pageflow method from Javascript is directly not possible unless we do some real funky coding in specifying document.myForm.action = xyz...Heres what I tried and it did not work as expected: I found another workaround that I will share with you.
1. In my jsp file when I click a button a call a JavaScript that calls the method that I want in pageflow like this: My method got invoked BUT when that method forwards the jsp, it lost the portal context. I saw my returned jsp only on the browser instead of seeing it inside the portlet on the page of a portal. I just see contents of jsp on full browser screen. I checked the url. This does make the sense. I do not see the url where I will have like test1.portal?_pageLabe=xxx&portlet details etc etc. So this bottom approach will notwork.
document.getElementById("batchForm").action = "/portlets/com/hid/iod/Batches/holdBatch"; // here if you give like test1.portal/pagelable value like complete url...it may work...but not suggested/recommended....
document.getElementById("batchForm").submit;
2. I achieved my requirement using a hidden variable inside my netui:form tag in the jsp. Say for example, I have 3 buttons and all of them should call their own action methods like create, update, delete on pageflow side. But I want these to be called through javascript say for example to do some validation. (I have diff usecase though). So I created a hidden field like ACTION_NAME. I have 3 javascript functions create(), update() etc. These javascripts are called onclick() for these buttons. In thse functions first I set unique value to this hiddent field appropriately. Then submit the form. Note that all 3 buttons now go to same common action in the JPF. The code is like this.
document.getElementById("ACTION_NAME").value = "UPDATE";
document.getElementById("batchForm").submit.
Inside the pageflow common method, I retriev this hidden field value and based on its value, I call one of the above 3 methods in pageflow. This works for me. There may be better solution.
3. Another usecase that I want to share and may be help others also. Most of the time very common usecase is, when we select a item in a drop bos or netui:select, we want to invoke the pageflow action. Say we have 2 dropdown boxes with States and Cities. Anytime States select box is changed, it should go back to server and get new list of Cities for that state. (We can get both states and cities and do all string tokenizer on jsp itself. But inreality as per business needs, we do have to go to server to get dynamic values. Here is the code snippet that I use and it works for all my select boxes onChange event.
This entire lines of code should do what we want.
<netui:anchor action="selectArticleChanged" formSubmit="true" tagId="selectPropertyAction"/>
<netui:select onChange="document.getElementById(lookupIdByTagId('selectPropertyAction',this )).onclick();" dataSource="pageFlow.selectedArticleId" >
<c:forEach items="${requestScope.ALL_ARTICLE}" var="eachArticle">
<%-- workshop:varType="com.hid.iod.forms.IoDProfileArticleRelForm" --%>
<netui:selectOption value="${eachArticle.articleIdAsString}">${eachArticle.articleItemName}</netui:selectOption>
</c:forEach>
</netui:select>
See if you can build along those above lines of code. Any other simpler approches are highly welcome.
Thanks
Ravi Jegga -
How to call Microsoft SQL User defined function??
I am trying to call Miscrosoft SQL user defined function (not stored procedure) and experience problems. The function -- func_profile_history takes 3 inputs and returns resultSet.
Please let me know if there is any examples some where. All the examples I found are for stored procedure.
Thanks....
Siu
************ source *************
public Vector callSqlFunction(String eidTradcom, String idSku, String endDate, String idUserPost)
throws TradcomException, RemoteException
System.out.println("--------------in callSqlFunction--------------1");
Connection conn = null;
java.sql.CallableStatement cstmt = null;
ResultSet rs = null;
ForecastInfo info = null;
Vector v = new Vector();
try{
conn = TradcomUtils.getConnection();
String sql = "{call func_profile_history(?,?,?)}";
System.out.println("--------------in callSqlFunction--------sql="+sql);
cstmt = conn.prepareCall(sql);
System.out.println("--------------in callSqlFunction-------2");
cstmt.setString(1, eidTradcom);
cstmt.setString(2, idSku);
cstmt.setString(3, endDate);
System.out.println("--------------in callSqlFunction-------3");
rs = cstmt.executeQuery();
System.out.println("--------------in callSqlFunction-------4");
while (rs.next()){
info = new ForecastInfo ();
info.setEidTradcom(rs.getString("eid_tradcom"));
info.setIdSku(rs.getString("id_sku"));
info.setQtOnHand(rs.getDouble("qt_on_hand"));
info.setQtOnHold(rs.getDouble("qt_hold"));
info.setQtNetOnHand(rs.getDouble("qt_net_on_hand"));
info.setQtAlloc(rs.getDouble("qt_alloc"));
info.setQtAvailUnalloc(rs.getDouble("qt_avail_unalloc"));
info.setQtPoShip(rs.getDouble("qt_po_ship"));
info.setQtPoRcvd(rs.getDouble("qt_po_rcvd"));
info.setQtTransit(rs.getDouble("qt_transit"));
info.setQtAsn(rs.getDouble("qt_asn"));
info.setQtPo(rs.getDouble("qt_po"));
info.setQtPoBalance(rs.getDouble("qt_po_balance"));
info.setQtSoShip(rs.getDouble("qt_so_ship"));
info.setQt4Cast(rs.getDouble("qt_4cast"));
v.addElement(info);
System.out.println("--------------in callSqlFunction-------5");
System.out.println("--------------in callSqlFunction-------v="+v);
return v;
}catch(Exception ex){
System.out.println("Error in callSqlFunction:"+ ex.getMessage());
throw CachingManager.getTradcomException(ex, "Error in callSqlFunction");
}finally{
try{ if (cstmt != null) cstmt.close(); } catch(Exception ex){}
try{ if (conn != null) conn.close(); } catch(Exception ex){}
********************* error output ***************
********************* bef calling callSqlFunction
--------------in callSqlFunction--------------1
--------------in callSqlFunction--------sql={call func_profile_history(?,?,?)}
--------------in callSqlFunction-------2
--------------in callSqlFunction-------3
Error in callSqlFunction:The request for procedure 'func_profile_history' failed
because 'func_profile_history' is a function object. Severity 18, State 1, Proc
edure 'LAP_DUAL null', Line 4
ERROR=Error in callSqlFunction...The request for procedure 'func_profile_history
' failed because 'func_profile_history' is a function object. Severity 18, State
1, Procedure 'LAP_DUAL null', Line 4well, I tried the preparedStatemnet and it worked. Case closed.
-
After call commit sql , data can not flush to disk
I use berkey db which support sql . It's version is db-5.1.19.
1, Open a database.
2. Create a table.
3. exec "begin;" sql
4. exec sql which is insert record into table
5. exec "commit;" sql
6. copy database file (SourceDB_912_1.db and SourceDB_912_1.db-journal) to Local Disk of D, then use a tool of dbsql to open the database.
7. use select sql to check data, there is no record in table.
1
sqlite3 * m_pDB;
int nRet = sqlite3_open_v2(strDBName.c_str(), & m_pDB,SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE,NULL);
2
string strSQL="CREATE TABLE [TBLClientAccount] ( [ClientId] CHAR (36), [AccountId] CHAR (36) );";
char * errors;
nRet = sqlite3_exec(m_pDB, strSQL.c_str(), NULL, NULL, &errors);
3
nRet = sqlite3_exec(m_pDB, "begin;", NULL, NULL, &errors);
4
nRet = sqlite3_exec(m_pDB, "INSERT INTO TBLClientAccount (ClientId,AccountId) VALUES('dd','ddd'); ", NULL, NULL, &errors);
5
nRet = sqlite3_exec(m_pDB, "commit;", NULL, NULL, &errors);
Edited by: 887973 on Sep 27, 2011 11:15 PMHi,
Here is a simple test case program I used based on your description:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sqlite3.h"
int error_handler(sqlite3*);
int main()
sqlite3 *m_pDB;
const char *strDBName = "C:/SRs/OTN Core 2290838 - after call commit sql , data can not flush to disk/SourceDB_912_1.db";
char * errors;
sqlite3_open_v2(strDBName, &m_pDB, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL);
error_handler(m_pDB);
sqlite3_exec(m_pDB, "CREATE TABLE [TBLClientAccount] ( [ClientId] CHAR (36), [AccountId] CHAR (36) );", NULL, NULL, &errors);
error_handler(m_pDB);
sqlite3_exec(m_pDB, "begin;", NULL, NULL, &errors);
error_handler(m_pDB);
sqlite3_exec(m_pDB, "INSERT INTO TBLClientAccount (ClientId,AccountId) VALUES('dd','ddd'); ", NULL, NULL, &errors);
error_handler(m_pDB);
sqlite3_exec(m_pDB, "commit;", NULL, NULL, &errors);
error_handler(m_pDB);
//sqlite3_close(m_pDB);
//error_handler(m_pDB);
int error_handler(sqlite3 *db)
int err_code = sqlite3_errcode(db);
switch(err_code) {
case SQLITE_OK:
case SQLITE_DONE:
case SQLITE_ROW:
break;
default:
fprintf(stderr, "ERROR: %s. ERRCODE: %d.\n", sqlite3_errmsg(db), err_code);
exit(err_code);
return err_code;
}Than I copied the SourceDB_912_1.db database and the SourceDB_912_1.db-journal directory containing the environment files (region files, log files) to D:\, opened the database using the "dbsql" command line tool, and queried the table; the data is there:
D:\bdbsql-dir>ls -al
-rw-rw-rw- 1 acostach 0 32768 2011-10-12 12:51 SourceDB_912_1.db
drw-rw-rw- 2 acostach 0 0 2011-10-12 12:51 SourceDB_912_1.db-journal
D:\bdbsql-dir>C:\BerkeleyDB\db-5.1.19\build_windows\Win32\Debug\dbsql SourceDB_912_1.db
Berkeley DB 11g Release 2, library version 11.2.5.1.19: (August 27, 2010)
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
dbsql> .tables
TBLClientAccount
dbsql> .schema TBLClientAccount
CREATE TABLE [TBLClientAccount] ( [ClientId] CHAR (36), [AccountId] CHAR (36) );
dbsql> select * from TBLClientAccount;
dd|dddI do not see where the issue is. The data can be successfully retrieved, it is present in the database.
Could you try putting in the sqlite3_close() call and see if you still get the error?
Did you remove the __db.* files from the SourceDB_912_1.db-journal directory?
Did you use PRAGMA synchronous, and if so, what is the value you set?
If this is still an issue for you, please describe in more detail the exact steps needed to get this reproduced and provide a simple stand-alone test case program that reproduces it.
Regards,
Andrei
Maybe you are looking for
-
Lightroom 1.2 not visible in Windows Explorer
I had Lightroom 1.1. and had no trouble assigning Lightoom as the program to open .jpgs. Since I've upgraded to 1.2 Lightroom does not appear as a choice in the file type selection list in Windows Explorer. When I browse to the Lightroom .exe file lo
-
Slideshows are Choppy in Front Row
Hi all, thanks in advance for any advice you may have. I can view slideshows smoothly when played directly from iphoto. However, when I view the same slideshow from within Front Row, there is a slow down when transitioning from one image to the next.
-
How to create an 8/6 working day calander in Projects
I need to set my calander to 8 days work 6 days not working on a 12 hr day If the calander had a 2 week cycle option this would be easy, but I need help please
-
I want to validate multiple input type=text with spry validation any one hepl me?
I want to validate multiple input type=text with spry validation any one hepl me? my code is as below plz help me *Professional Experience Years Months
-
Link between HTML Component and Application
Hi folks, it it possible to have a link in an HTML component call a function in my application? Chris