Locking multiple records in a database table at a time
Hi Experts,
I have a requirement to lock multiple records in the database table for writing. I have created lock object in SE11. But with this we have only 2 possibilities either lock entire table or lock a single record at a time.
My requirement is, i have table with key field PROJECTID. I want more than one project to be locked, but not the complete table. I dont have any other field in the table to compare.
Thanks in advance..
Regards,
Asrar
Hi ,
Try with FOR UPDATE in the SELECT sentence.
SELECT FOR UPDATE *
INTO Internal_Table
FROM Table
WHERE Conditions.
UPDATE "Table_name" FROM TABLE Internal_Table.
COMMIT WORK.
This sentence blocks only the records that satisfy of the WHERE conditions (not the entire table) and unlocks after commit work.
Hope this information is help to you.
Regards,
José
Similar Messages
-
Inserting multiple records in to database table using webdynpro abap
Hi all,
I have created a username inputfield,a button and a table
with one coloumn.
If i enter names in the input field then the values should be
displayed in that table.
Even i have got the answer i am not able to insert
the values in to database(ztable) table.
i.e. only one value(1st) was inserted the second value was
not inserted ....
so kindly send me the coding to insert multiple records
into the database table......
by,
ranjithhi Ranjith,
If you want to insert multiple records from the webdynpro view table to database table then try the following code.
DATA lo_nd_tablenode TYPE REF TO if_wd_context_node.
DATA lo_el_tablenode TYPE REF TO if_wd_context_element.
DATA ls_tablenode TYPE wd_this->element_tablenode.
DATA it_tablenode LIKE STANDARD TABLE OF ls_tablenode.
navigate from <CONTEXT> to <tablenode> via lead selection
lo_nd_tablenode = wd_context->get_child_node( name = wd_this->wdctx_tablenode ).
get element via lead selection
lo_el_tablenode = lo_nd_tablenode->get_element( ).
get all declared attributes
lo_nd_tablenode->get_static_attributes_table(
IMPORTING
table = it_tablenode ).
MODIFY databasetablename FROM TABLE it_tablenode.
here it_tablenode is the internal table which holds the value from webdynpro view..
Regards,
Shamila. -
How to Insert a record in a database table in debugging mode in production
Hi,
How to Insert a record in a database table in debugging mode in production ?
Waiting for kind response.
Best Regards,
Padhy
Moderator Message : Duplicate post locked.
Moderator message : Warning. Don't create multiple threads for same question.
Edited by: Vinod Kumar on May 12, 2011 11:02 AM
Edited by: Vinod Kumar on May 12, 2011 11:04 AMHi Senthil,
Regards,
Phani Raj Kallur
Message was edited by: Phani Raj Kallur -
How to lock a record in a database using java
hi,
i want to lock a record in a database. how could it be done.
if any body has idea pls share with meOk, then you can create a simple lock:
The idea is same, but this allow you to lock multiple id at the same time:
static Object LOCK_FLAG = new Object();
static Object[] locker = new Object[1000]; // assuming you have id 0-999 to lock
this function will wait until current thread succesfully
locks all the ids to lock.
public void lock( int[] idsToLock) {
while (true) {
synchronized(locker) {
boolean success = true;
for(int i=0; i<idsToLock.length; i++) {
if (locker[ idsToLock[ i ] ] != null )
success=false;
if (!success) break;
if (success) {
for(int i=0; i<idsToLock.length; i++)
locker[ idsToLock[ i ] ] = LOCK_FLAG;
locker.notify();
return;
locker.notify();
try { Thread.sleep(100); } catch (Exception ex) { }
this function will wait until all locks are released
public void releaseLock( int[] idsToLock) {
synchronized(locker) {
for(int i=0; i<idsToLock.length; i++)
locker[ idsToLock[ i ] ] = null;
locker.notify();
}How to use:
int[] recordToLock = new int[] { 1, 100, 55, 32, 25 };
lock(recordToLock); // lock before modify ..
try {
// do anything with your records ...
} catch (Throwable t) {
// if any exception ...
} finally {
releaseLock(recordToLock); // make sure this will always be executed
}rgds,
Alex -
Count Number of Records in Oracle Database Table
Please help me to see if I "set" and "return" the number of records in my database table correctly (I am using the Oracle 9i):
public int getNumberOfRecipientBeans() throws AssertionException, DatabaseException
Connection conn = null;
PreparedStatement stmt = null;
String query = "SELECT count(*) FROM ContactEntry WHERE ContactTypeID = 6";
ResultSet rs = null;
try
conn = DBConnection.getDBConnection();
stmt = conn.prepareStatement( query );
rs = stmt.executeQuery();
// do I have to set anything here?
if ( !rs.next() )
throw new AssertionException("Assertion in servuce.getNumberOfRecipients");
// Am I returning the counts here?
return rs.getInt( 1 );
catch( SQLException sqle )
sqle.printStackTrace();
throw new DatabaseException( "Error executing SQL in service.getNumberOfRecipients." );
finally
if ( conn != null )
try
stmt.close();
stmt = null;
conn.close();
catch( Exception Ex )
System.out.println( "Problem occurs while closing " + Ex );
conn = null;public class MyE extends Exception {
public MyE() {
super(); // this line is not necessary. An empty method would suffice
public MyE(String msg) {
super(msg);
// Check the API for Exception or Throwable--I may have the args backward
public MyE(String msg, Throwable cause) {
super(msg, cause);
public MyE(Throwable cause) {
super(cause);
// Replace the log_warn() calls with appropriate logging calls for your context
public class Closer {
public static final void close(ResultSet closeMe) {
if (closeMe != null) {
try {
closeMe.close();
catch (Throwable th) { log_.warn("Closing " + closeMe + ": ", th); }
public static final void close(Statement closeMe) {
if (closeMe != null) {
try {
closeMe.close();
catch (Throwable th) { log_.warn("Closing " + closeMe + ": ", th); }
public static final void close(Connection closeMe) {
if (closeMe != null) {
try {
closeMe.close();
catch (Throwable th) { log_.warn("Closing " + closeMe + ": ", th); }
public static final void close(ResultSet rs, Statement stmt, Connection con) {
close(rs);
close(stmt);
close(con);
} -
Selecting the last record from a database table
In my ABAP Program, I have to use a select statement to retrieve the last record from the database table with the same key. In other words, the Program will get more than one hit on the database table for the selected keys and I need to retrieve values from only the last record and not the first. I know I can use an internal table to sort the records first and then retrieve the right value. But to make things easier, is there a SELECT statement keyword than I can use to do this in one single step? Thanks!
hi,
tables:mara.
data: begin of it_mara occurs 0,
matnr like mara-matnr,
meins like mara-meins,
mtart like mara-mtart,
end of it_mara.
select-options:s_matnr for mara-matnr.
select matnr
meins
mtart
from mara
into table it_mara
where matnr in s_matnr.
if not it_mara[] is initial.
sort it_mara by matnr descending.
read table it_mara index 1.
endif.
then you get the last record of the select statement.
reward points if useful,
venkat. -
Deleting and updating records in a database table
dear all ,
i have created a databse table to which i have to update and delete records thru my program whixh i am unable to do so plz help me.Hi Sonu,
To delete and update the records in your database table, you can create a Function Group and all the necessary function modules for it. This will a good approach as this will separate the database interface logic and the business logic. You need to use the DELETE and UPDATE ABAP keywords to delete and update the records of the database tables. Have a look at the ABAP Keyword documentation for a complete details of the usage.
Have a look at the following link:
DELETE
http://help.sap.com/saphelp_nw04/Helpdata/EN/fc/eb3aef358411d1829f0000e829fbfe/frameset.htm
UPDATE
http://help.sap.com/saphelp_nw04/Helpdata/EN/fc/eb3aef358411d1829f0000e829fbfe/frameset.htm
Hope this will help.
Thanks,
Samantak. -
Access is not inserting, updating or deleting records in my database table on the server
I am having a problem with an application I developed using Dreamweaver 8 and Access 2000 several years ago which is no longer working correctly. The problem is that Access is not inserting, updating or deleting records in my database table on the server but is reflected in changes to my Web site. I used the Dreamweaver server behaviors: insert record, update record and delete record to make the changes to my Access table on the server. My Access table on the server shows all of the records I inserted or updated in the past, but not any of the newly inserted on updated records.
does any one have any ideas as to what my problem is?
JimNo, that has nothing to do with your problem. Let's make sure I understand the symptoms.
1) Your site is online at a remote host.
2) You use a dynamic page in your online site to update a database record (insert, delete, or update)
3) The update then appears correctly on your dynamic content page.
4) You download the mdb and it appears to not have any of the upates you just made.
Please correct any of these statements if they are wrong.
If the above is correct, then you must be looking at a cached mdb, or the mdb you are looking at is in the wrong location. Do this: search your entire drive for copies of the mdb, including in the Windows temp directories which is likely where the cached copy is located. Delete any extra copies and download again. -
To count the records in the database table...
I want to count the number of records in the database table (infotypes PA0000)
is it possible to count ?
Any function module is there?
Thanks in advance..Hi dhavamani ponnusamy,
SELECT COUNT(*) FROM <DB TABLE NAME> WHERE <CONDITION>.
or
SY-DBCNT Will have total no of records satisfying the given criteria in where clause.
See below sample..
Data: itab like mara occurs 0 with header line.
Select * from mara into table mara.
write:/ sy-dbcnt.
Hope it will solve your problem...
Reward points if useful..
Thanks & Regards
ilesh 24x7 -
How to select first several records from a database table by using select?
Hi,
I want to select first 100 records from a database table by using select clause. How to write it?
Thanks a lot!hai long!
well select statement is used to retrive
records from the database.
following is the syntax to be used.
1) select * into corresponding fields of itab from basetable where condition.
endselect.
ex: select * into corresponding fields of itab from mara
where matnr >= '1' and matnr <= '100'.
append itab.
endselect.
select * is a loop statement.it will execute till matnr is less than or equal to 100.
note: you can also mention the required field names in the select statement otherwise it will select all the field from table mara.
note: itab means your internal table name.
hope you got the required thing.if it really solved u r problem then award me the suitable points.<b></b> -
How to lock multiple user for a transcation code at same time is der any tc
how to lock multiple user for a transcation code at same time is der any tc
suppose i hav 15 user and i want to lock 10 user for mm02 who can i to itBasis can do a export and import transport, still if don't have connection between boxes.
or
check this
http://www.sap-basis-abap.com/abap/copy-program-variants-from-one-to-another.htm
a® -
Inserting multiple records into a database from a table
I have a dynamic table with rows upto 10. i am trying to insert all the records in these rows into a database ( msaccess)
table name: Table1 ( in my form )
Database table : movies_comments ( as posted in stefan's forums ).
table columns: username, movieid, comments
i am using the following code.
Database.ExecSQL() function is as posted in stefcamerons forums.
var tlength = xfa.resolveNode("form1.#subform[0].Table1.Row1[*]").length;
xfa.host.messageBox("tlength is :" +tlength);
for ( var i = 1; i <= tlength; i++)
var username = xfa.resolveNode("form1.#subform[0].Table1.Row1["+i+"].user_name").rawValue;
var movieID = xfa.resolveNode("form1.#subform[0].Table1.Row1["+i+"].movie_id").rawValue;
var commentS = xfa.resolveNode("form1.#subform[0].Table1.Row1["+i+"].comment_").rawValue;
Database.ExecSQL("INSERT INTO movie_comments (username, movieId, comment) VALUES ('username','movieID', 'commentS');");
i am trying to insert multiple records using the code above. But i am getting error
GeneralError: Operation failed.
XFAObject.resolveNode:1:XFA:form1[0]:#subform[0]:Button1[0]:click
SOM expression returned list when single result was expected
suggest me an alternate way to insert multiple records from a table into a database.
thank Qfigured it out. I changed the ...OR (alternative names = colname) in the recordset to ...OR (alternative names LIKE %colname%). Works like a charm now- the result of a good night's sleep.
-
Can you use ESB to insert multiple records into a Database
We have an XML file that has a Parent/Child relationship.
In situation 1 we have a single parent record in the xml file. We can insert the record into the database successfully.
In situation 2 we have a parent and a an associated child record. By using a filter expression to identify the existence of the child record we can route to the first DB Adapter to insert the parent then to the second DB Adapter to insert the child.
Is this final scenario logical and also possible.
Situation 3 we have multiple child records associated to a single parent. So we would first insert the parent record then insert all the child records.
ThanksI use PL/SQL for this if you are using Oracle.
Have a look at this post, it is for AQ but the concept can be used for PL/SQL
Re: Can I pass a pl/sql table as a parameter from a database adaptor
I will send you an example
cheers
James -
Retrive Multiple Records Into A database Block
hi, all
i would like to know if there is any document or references wich illustrait the way of retriving Multi records from a procedure built on database side into a database block using form 6i ??
My Problem is : i create a procedure in the database which retrive a multiple records and the variable from procedure (out) are the same value from Form side (in). but it always fetch the whole records at the same record position in the block as the cursor raised on . i found a way explian how to mintain a set or record using a record type and create a table of that record type , but still don't' know how deal calling the procedure from the form side .
Any advice of this issue will be greatfull and if sample of code provided will be better
Thanks in Advance
Regards
OmarYou can try something like this:
PROCEDURE POPULATE_BLOCK IS
cursor c1 is
SELECT <your column names>
FROM <your table name>
where <your where condition>
BEGIN
open c1;
go_block('<your block name');
first_record;
loop
fetch c1 into
:<your block name>.<your column name 1>,
:<your block name>.<your column name 2>,
etc,etc
exit when c1%NOTFOUND;
next_record;
end loop;
close c1;
first_record;
END;
so your code might actually look something like this:
PROCEDURE POPULATE_BLOCK IS
cursor c1 is
SELECT distinct
a.pog_dept
,a.pog_number
,a.pog_level
,a.pog_id
,a.start_date
,a.transmit_date
,a.deactivate_date
,b.pog_description
FROM pog_stores_msi a, pog_master_msi b
where a.pog_dept = :b_main.bi_dept
and a.pog_number = :b_main.bi_pog_number
and a.pog_level = :b_main.bi_pog_level
AND A.POG_ID = :B_MAIN.I_POG_ID
and a.pog_dept = b.pog_dept
and a.pog_number = b.pog_number
and a.pog_id = b.pog_id;
BEGIN
open c1;
go_block('b_main');
first_record;
loop
fetch c1 into
:b_main.bi_dept
,:b_main.bi_pog_number
,:b_main.bi_pog_level
,:b_main.i_pog_id
,:b_main.i_start_date
,:b_main.i_transmit_date
,:b_main.i_deactivate_date
,:b_main.i_pog_desc;
exit when c1%NOTFOUND;
next_record;
end loop;
close c1;
END;
Hope this helps,
NumbNutz -
Insert Insert XML file into multiple records in Oracle Database
I would like to find out if it is possible to insert a single XML file into multiple records or tuples in a Oracle database table. I have a single XML file which is at multiple levels. The meta data for the levels are common and each level can have meta data of their own in addition. I do not have any meta data field which will uniquely determine whether the data belongs to Root level, Intermediate level or at the document level. Is there any way I can determine which level the meta data belongs to and thereby make a corresponding entry into the database table tuple? For example I could have an attribute called level which is going to be present only in the database table and not in the XML file. If level=1 then it corresponds to "Root" meta data, if level=2 then it corresponds to "Intermediate" level and if level=3 then it corresponds to meta data at document level. I need a way to calculate the value for level from the XML file and thereby insert the meta data element into a tuple in a single table in Oracle.
Hi,
extract your xml and then you can use insert all clause.
here's very small example on 10.2.0.1.0
SQL> create table table1(id number,val varchar2(10));
Table created.
SQL> create table table2(id number,val varchar2(10));
Table created.
SQL> insert all
2 into table1 values(id,val)
3 into table2 values(id2,val2)
4 select extractValue(x.col,'/a/id1') id
5 ,extractValue(x.col,'/a/value') val
6 ,extractValue(x.col,'/a/value2') val2
7 ,extractValue(x.col,'/a/id2') id2
8 from (select xmltype('<a><id1>1</id1><value>a</value><id2>2</id2><value2>b</value2></a>') col from dual) x;
2 rows created.
SQL> select * from table1;
ID VAL
1 a
SQL> select * from table2;
ID VAL
2 b Ants
Maybe you are looking for
-
Disable auto import function?
I want to disable the auto import function in iTunes, but can not find the setting. My problem is I download a new song into a temp directory, immediately iTunes opens and imports the song into the iTunes library. I DO NOT want iTunes to import the s
-
LR2 How to select one person in a picture
New to LR and I'm trying to select just one person in a picture and remove everything else. What tool do I use or should I use Photoshop thanks Mike
-
Regarding Matchcode object in ABAP programs
hi experts, we have Addon abap programs using Matchcode objects in R3 4.6C with OS unix. 1-I Would like to know whether the Sorting order of Match code values will change if we change OS from UNIX to solaris. I heard that due to Locales, Sorting orde
-
How do I get albums and songs I have purchased back on my devices? They show up in my purchased list but when I click on them a little circle shows up with an x in it and it won't let me do anything with it. Any guidance would be greatly appreciated.
-
Hi, I need a documentation about ABAP 7 and the possibles runtime errors. Thanks. Rafael. Message was edited by: Rafael Rocha