Deadlock when deleting a not linked data record in a parent table
Hello, who knows about this problem with Oracle 10g:
Our installation of Oracle 10.2g behaves different from Oracle 9.2 concerning locking of data records:
To prevent that different users edit a complex data record at the same time and store it, the user has to put
the data record into the "edit mode" and we lock it with "Select CharFieldZ from TableX where ID = 1 for UPDATE NOWAIT".
In this data record references (= foreign keys) to other tables are used; with foreign key constraints we
prevent those data records of these tables from being deleted, which are used in data records of tableX: on
deleting such a record Oracle gives an error message ORA-02292, which the application translates for the
user: "You cannot delete this record, because it is used somewhere else".
Now when locking data record A under Oracle 10.2g, which contains a foreign Key upon data record 1 of tableF,
and trying to delete data record 2 of tableF, a deadlock appears, even when this data record is not used
anywhere else.
Further conditions:
- Data record 2 was created before locking of data record A.
- In the same session tableF was opened for reading before.
Is there a parameter, which leads Oracle 10.2g to return to the former behavoir ?
or: how is it possible to prevent a deadlock anyhow else ?
Thanks in advance
Lothar Weidl-Walther
Germany
Edited by: schatzag on 04.02.2009 14:22
for easier demonstration the SQL-scripts:
Installation:
DELETE TableF;
DELETE TableX;
CREATE TABLE TableF
( ID INTEGER NOT NULL,
NAME VARCHAR2(30 BYTE) NOT NULL);
CREATE UNIQUE INDEX PK_TableF ON TableF(ID);
ALTER TABLE TableF ADD CONSTRAINT PK_TableF PRIMARY KEY(ID);
INSERT INTO TableF VALUES (1, 'Record1');
INSERT INTO TableF VALUES (2, 'Record2');
commit;
CREATE TABLE TableX
( ID INTEGER NOT NULL,
NAME VARCHAR2(30 BYTE) NOT NULL,
CharFieldZ VARCHAR2(100 BYTE),
TableF_ID INTEGER);
ALTER TABLE TableX ADD (
CONSTRAINT FK_TableX_TableF
FOREIGN KEY (TableF_ID)
REFERENCES TableF (ID));
INSERT INTO TableX VALUES (1, 'ComplexRecord1', 'User1', 1);
commit;
Session1:
SELECT CharFieldZ FROM TableX WHERE ID = 1 FOR UPDATE NOWAIT;
SELECT * FROM TableF;
Session2:
DELETE FROM TableF WHERE ID = 2;
Edited by: schatzag on 04.02.2009 14:26
I'm not aware that the locking mechanism did change between Oracle 9i and 10g. Can you provide a simple and reproducable example?
You current description is very "uncomplete", e.g. this statement would lock the full table, but I think that is not what your application does.
Select CharFieldZ from TableX for UPDATE NOWAITAs Peter already mentioned you should check if there are any other differences between the databases. Let me mention just a few points that I can think of at the moment:
* indexes
* FK constraints with DELETE CASCADE
* higher oracle block size (can lead to more ITL locks)
Edited by: Sven W. on Feb 4, 2009 2:18 PM
Similar Messages
-
DMS icon disable when documents are not linked
Dear friends,
Our client is having a requirement that when documents are not linked with any of the item no. of Purchase Requisition, then the DMS icon should be disabled, so that user dont have to check each and every item level of PR. If document is linked with any of the item no., then it should not get disabled.
Kindly suggest how to explore this functionality in SAP DMS.
Regards,
PunamTry doing a Save As on the linked doc and see if that helps. I presume there is no problem accessing the links from the same machine.
-
I have imported all objects from an old access db (.adp file) into a new db (.accdb). All of my data lives in sql server so I have added all the tables and views to the .accdb as linked tables. My forms all connect to data, but I am having issues
with a sub form. The sub form does not allow for creation of children records tied to the parent record the way the old db did/does.
Correct - old format .adp file (notice the empty second record in sub-form with the defaulted date of today's date):
Incorrect - new .accdb file (notice the lack of empty second record in sub-form like above):
If I click the create new record icon in the bottom of the subform, it creates a completely blank record not tied to the parent record (fields blacked out in screen shots above). When using this button all parent record fields are blank.
I have also verified the child table used in the sub-form has a valid Fky relationship to parent table used in the parent form.
Have you checked each forms 'Filter' property (in Design view) to make sure they are blank and that each forms 'Filter On Load' property to make sure it is set to 'No'? Also, you might try inserting the following commands in each forms On
Open event:
DoCmd.RunCommand acCmdRemoveAllFilters
DoCmd.ShowAllRecords
If you can open each forms Record Source and they are showing that new records are able to be entered (the new record * is showing at the bottom of the recordset), then check each forms On Load and On Open events to make sure there is no filtering.
In addition, check any macro or VBA commands behind the button that opens the main form to make sure there is no SQL filtering in the DoCmd.OpenForm command.
If one of the forms Record Source does NOT allow new records, then you will need to change that Record Source so the new record * indicator shows.
Out of ideas at this point. -
Deadlock when delete rows with blob.
Hello
I have the following issue. I try to clean a table that contains a BLOB column.
To do this I use SQLDBC I create a statement that contains the LOB column, I fetch the line, load the Blob. and before fetching the next line, I send a delete request. and I fall in the deadlock.
If I fetch the next line before sending the delete request there is no deadlock, there is also no deadlock if i do not request le LOB column in the select.
In fact when I made select with LOB, there is the follwing line in DOMAIN.LOCKS
SESSION;TRANSCOUNT;PROCESS;USERNAME;DATE;TIME;TERMID;LASTWRITE;LOCKMODE;LOCKSTATE;APPLPROCESS;APPLNODE;SCHEMANAME;OWNER;TABLENAME;TABLEID;ROWIDLENGTH;ROWIDHEX;ROWID;
295513; 4290;438;ESKDBADM;2010-06-17;12:05:46;ly-delorme-u..1674;?;tab_share;?;5748;LY-DELORME.esker.corp;?;?;?;0000800000046919;0;?;?
when i send the delete request the following lock appears in DOMAIN.LOCKS. A exclusif lock on the column I want to delete. It's ok
SESSION;TRANSCOUNT;PROCESS;USERNAME;DATE;TIME;TERMID;LASTWRITE;LOCKMODE;LOCKSTATE;APPLPROCESS;APPLNODE;SCHEMANAME;OWNER;TABLENAME;TABLEID;ROWIDLENGTH;ROWIDHEX;ROWID;
295521; 4287;167;ESKDBADM;2010-06-17;12:05:49;ly-delorme-u..1674; 5;row_exclusive;write;5748;LY-DELORME.esker.corp;ESKDBADM;ESKDBADM;DBM350_AUTOTESTXML;0000000000000934;5;00C51133800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000;
BUT there is a dead lock , I think because of the following entry in DOMAIN.LOCK_WAITS
TABLENAME;TABLEID;H_TERMID;H_PROCESS;H_APPLPROCESS;H_APPLNODE;H_ROWIDHEX;H_ROWID;H_LOCKMODE;H_DATE;H_TIME;H_LOCKTIMEOUT;R_TERMID;R_PROCESS;R_APPLPROCESS;R_APPLNODE;R_ROWIDHEX;R_ROWID;R_REQMODE;R_DATE;R_TIME;R_REQTIMEOUT;
?;0000800000046919;ly-delorme-u..1674;438;5748;LY-DELORME.esker.corp;?;?;tab_share;2010-06-17;12:05:46;?;ly-delorme-u..1674;167;5748;LY-DELORME.esker.corp;?;?;tab_exclusive;2010-06-17;12:05:49; 3585
The database request a tab_exclusive lock on tableid 0000800000046918 but there is already a tab_share lock on this.
Do you why there is a lock on the table : tableid 0000800000046918 ?
How to avoid this lock using SQLDBC ?
Thanks for you help.
Yann.this is the same reply as previous reply, this carriage return. I hope.
Hello,
Here is code that explain my issue.
I create a table like this :
create table "ESKDBADM"."DBM350_AUTOTESTXML"( "MSN" INTEGER not null, "DIST_FILE" BLOB, constraint SYSPRIMARYKEY primary key ("MSN"))
And then I try to delete row with the following program. I do not understand why the request SELECT Msn, DIST_FILE FROM DBM350_AUTOTESTXML set a share lock on the tableid : 000080000004691D.
I do not find this tableid in the "SYSINFO"."FILES" table.
SESSION;TRANSCOUNT;PROCESS;USERNAME;DATE;TIME;TERMID;LASTWRITE;LOCKMODE;LOCKSTATE;APPLPROCESS;APPLNODE;SCHEMANAME;OWNER;TABLENAME;TABLEID;ROWIDLENGTH;ROWIDHEX;ROWID;
295697; 5220;172;ESKDBADM;2010-06-21;11:01:40;ly-delorme-u..1CDC;?;tab_share;?;7388;LY-DELORME.esker.corp;?;?;?;000080000004691D;0;?;?
// SQLDBC.cpp : Defines the entry point for the console application.
// YOU MUST CHANGE CONNECTION SETTINGS.
#include "stdafx.h"
#include <stdio.h>
#include <tchar.h>
#include <comdef.h>
#include <iostream>
#include "SQLDBC.h"
using namespace SQLDBC;
static void parseArgs(int argc, wchar_t **argv);
static SQLDBC_Connection *connectDB(SQLDBC_Environment * env = NULL);
static char* convertToUCS2(char *src);
static void usage();
SQLDBC_Environment *g_env;
typedef struct ConnectArgsT {
bstrt username;
bstrt password;
bstrt dbname;
bstrt host;
bstrt request;
} ConnectArgsT;
ConnectArgsT connectArgs;
void exitOnError(SQLDBC_ErrorHndl &err);
int _tmain(int argc, _TCHAR* argv[])
parseArgs(argc, argv);
SQLDBC_Connection *conn = connectDB();
//* Create a new statment object and execute it.
SQLDBC_PreparedStatement *stmt = conn->createPreparedStatement();
// FREEZE
if (connectArgs.request.length() == 0)
connectArgs.request = "SELECT Msn, DIST_FILE FROM DBM350_AUTOTESTXML";
/* NO FREEZE
if (connectArgs.request.length() == 0)
connectArgs.request = "SELECT Msn FROM DBM350_AUTOTESTXML";
char command = (char)((LPCWSTR)(connectArgs.request));
//* Executes the UNICODE encoded SQL command.
SQLDBC_Retcode ret = stmt->prepare((const char*)command, SQLDBC_StringEncodingType::UCS2Swapped);
exitOnError(stmt->error());
stmt->execute();
exitOnError(stmt->error());
// * Get the resultset.
SQLDBC_ResultSet *result;
result = stmt->getResultSet();
exitOnError(stmt->error());
// * Fetch the row from the resultset.
result->next();
SQLDBC::SQLDBC_RowSet* pRowset = result->getRowSet();
ret = pRowset->fetch();
exitOnError(result->error());
wchar_t szString[30];
SQLDBC_Length ind;
Get a string value from the column.
result->getObject(1, SQLDBC_HOSTTYPE_UCS2_SWAPPED, szString, &ind, sizeof(szString)); // Retreive MSN.
// Delete de line.
// Create a new connection for delete
SQLDBC_Connection *conn2 = connectDB(g_env);
//* Create a new statment object and execute it.
SQLDBC_PreparedStatement *stmt2 = conn2->createPreparedStatement();
std::wstring st = L"DELETE FROM DBM350_AUTOTESTXML WHERE MSN=";
st += szString;
stmt2->prepare((char*)st.c_str(), SQLDBC_StringEncodingType::UCS2Swapped);
//* Executes the UNICODE encoded SQL command.
ret = stmt2->execute();
exitOnError(stmt->error());
printf("%s\n", szString);
return 0;
static char *convertToUCS2(char *src)
int len = strlen(src);
wchar_t w=(wchar_t)calloc(len, sizeof(wchar_t));
int nc = mbstowcs(w, src, len);
if ((size_t)-1 == nc) {
fprintf(stderr, "Conversion to UCS2 failed. Execution stopped.\n");
exit(1);
short s=(SQLDBC_Int2)calloc(nc+1, sizeof(SQLDBC_Int2));
int i;
for(i=0; i<nc; i++) {
s<i> = w<i>;
free(w);
return (char*)s;
static char* strupper(char *str)
char *p=str;
while(*p) {
p=toupper(p);
++p;
return str;
static wchar_t *argv0;
#ifdef WIN32
#define STRICMP _stricmp
#else
#define STRICMP strcasecmp
#endif
SQLDBC_Connection *connectDB(SQLDBC_Environment * env)
char errorText[200];
SQLDBC_Retcode rc;
if (g_env == NULL)
Every application has to initialize the SQLDBC library by getting a
reference to the ClientRuntime and calling the SQLDBC_Environment constructor.
SQLDBC_IRuntime *runtime;
runtime = SQLDBC::GetClientRuntime(errorText, sizeof(errorText));
if (!runtime) {
fprintf(stderr, "Getting instance of the ClientRuntime failed %s\n", errorText);
usage();
env = new SQLDBC_Environment(runtime);
g_env = env;
Create a new connection object and open a session to the database.
SQLDBC_Connection *conn = env->createConnection();
printf("Connecting to '%s' on '%s' as user '%s'\n",
(char)connectArgs.dbname, (char)connectArgs.host, (char*)connectArgs.username);
rc = conn->connect(connectArgs.host, connectArgs.dbname,
connectArgs.username, connectArgs.password);
if(SQLDBC_OK != rc) {
fprintf(stderr, "Can't connect to '%s'.\nERROR: %d:'%s'\n",
connectArgs.dbname, conn->error().getErrorCode(), conn->error().getErrorText());
exit(1);
return conn;
static void parseArgs (int argc, wchar_t **argv)
argv0 = wcsdup(argv[0]);
setting defaults for demo database
connectArgs.username = "ESKDBADM";
connectArgs.password = "DELORME";
connectArgs.dbname = "EDP350";
connectArgs.host = "ly-delorme";
use values from command line
if (argc > 5) {
connectArgs.request = argv [5];
if (argc > 4) {
connectArgs.host = argv [4];
if (argc > 3) {
connectArgs.dbname = argv [3];
if (argc > 2) {
connectArgs.password = argv [2];
if (argc > 1) {
if (!wcsicmp(argv [1], L"-h"))
usage();
else {
connectArgs.username = argv [1];
strupper(connectArgs.username);
strupper(connectArgs.password);
void exitOnError(SQLDBC_ErrorHndl &err)
if(err) {
fprintf(stderr, "Execution stopped %d:'%s'", err.getErrorCode(), err.getErrorText());
exit(1);
static void usage()
wchar_t *s = wcsrchr(argv0, L'/');
if (!s)
s = wcsrchr(argv0, L'
if (s)
*s = '\0';
printf("Syntax: %s [-h] | [<connect_options>]\n"
"\tconnect_options :: \n"
"\t\t[ <username> \n"
"\t\t[ <password>\n"
"\t\t[ <database_name>\n"
"\t\t[ <database_server> ]]]]\n"
"\t\t[ <request> ]]]]\n"
"\tCalling %s without any arguments will use user '%s','%s'\n"
"\t\ton database '%s' at server '%s'\n",
argv0, argv0,
connectArgs.username, connectArgs.password,
connectArgs.dbname, connectArgs.host);
exit(1); -
ICR Process 2, FBICR2, reconcilation screen not showing data records
Experts,
My reconciliation screen is not showing me any records for process 2. After posting 2 documents and running FBICA2 (Assignment Program), I can see the items be assigned. The records are also all available in auxially programs total records and list of documents. When I run FBICR2 (manual reconciliation) I get the following screen http://img20.imageshack.us/img20/8163/20395360.png
. Has anyone dealt with this issue? Why would the records be available at all steps except the last?Ralph,
With the help of an ICR SME yesterday, I was able to get process two working! It was great, the two notes helped and we reconciled several test scenarios.
This morning, I was working on process 2 and used the auxilary program to delete the transactional data (not index tables), reactivated the data tables, posted two new documents, and now the reconciliation display is back to u201CNo Data Record Selectedu201D issue we solved this week. No configuration was changed since FBICR2 began working yesterday. I tried recalculating totals in the Aux. programs list but that didn't help either. FBICA2 is still working perfectly and when I look at the records in auxiliary programs they have been assigned a document group number, so I know they are reconciling. The issue is with the Display in FBICR2. What would trigger FBICR2 to revert back to this error? Are there any known issue with the stability of FBICR2, or known issues with using the delete transactional data program?
Please Advise.
Thanks,
John Scime -
I have a master table and i need to import the rows into the parent and child table.
Master table name is Flatfile_Inventory
Parent Table name is INVENTORY
Child Tables name are INVENTORY_AMOUNT,INVENTORY_DETAILS,INVENTORY_VEHICLE,
Error details will be goes to LOG_INVENTORY_ERROR
I have 4 duplicate rows in the Flatfile_Inventory which i have already inserted in the Parent and child table.
Again when i run the query using stored procedure,
its tells that all the 4 rows are duplicate and will move to the Log_Inventory_Error.
I need is if i have the duplicate rows in the flatfile_Inventory when i start inserting into the parent and child table the already inserted row have the unique ID i
must identify it and delete that row in the both parent and chlid table.And latest row must get inserted into the Parent and child table from Flatfile_Inventory.
Please help me to write the query i have attached the Full stored procedure Script..
Arunraj KumarHi Santhosh,
This is my Script.
-- =============================================
-- Stored Procedure for FLATFILE_INVENTORY
-- =============================================
-- Drop stored procedure if it already exists
DROP PROCEDURE SP_Flatfile_Inventory
GO
CREATE PROCEDURE SP_Flatfile_Inventory
AS
--USE IconicMarketing
GO
DECLARE
@FileType varchar(50) ,
@ACDealerID varchar(50) ,
@ClientDealerID varchar(50) ,
@DMSType varchar(50) ,
@StockNumber varchar(50) ,
@InventoryDate datetime ,
@StockType varchar(100) ,
@DMSStatus varchar(50) ,
@InvoicePrice numeric(18, 2) ,
@CostPack varchar(50) ,
@SalesCost numeric(18, 2) ,
@HoldbackAmount numeric(18, 2) ,
@ListPrice numeric(18, 2) ,
@MSRP varchar(max) ,
@LotLocation varchar(50) ,
@TagLine varchar(max) ,
@Certification varchar(max) ,
@CertificationNumber varchar(max) ,
@VehicleVIN varchar(50) ,
@VehicleYear bigint ,
@VehicleMake varchar(50) ,
@VehicleModel varchar(50) ,
@VehicleModelCode varchar(50) ,
@VehicleTrim varchar(50) ,
@VehicleSubTrimLevel varchar(max) ,
@Classification varchar(max) ,
@TypeCode varchar(100) ,
@VehicleMileage bigint ,
@EngineCylinderCount bigint ,
@TransmissionType varchar(50) ,
@VehicleExteriorColor varchar(50) ,
@VehicleInteriorColor varchar(50) ,
@CreatedDate datetime ,
@LastModifiedDate datetime ,
@ModifiedFlag varchar(max) ,
@InteriorColorCode varchar(50) ,
@ExteriorColorCode varchar(50) ,
@PackageCode varchar(50) ,
@CodedCost varchar(50) ,
@Air varchar(100) ,
@OrderType varchar(max) ,
@AgeDays bigint ,
@OutstandingRO varchar(50) ,
@DlrAccessoryRetail varchar(50) ,
@DlrAccessoryCost varchar(max) ,
@DlrAccessoryDesc varchar(max) ,
@ModelDesc varchar(50) ,
@Memo1 varchar(1000) ,
@Memo2 varchar(max) ,
@Weight varchar(max) ,
@FloorPlan numeric(18, 2) ,
@Purchaser varchar(max) ,
@PurchasedFrom varchar(max) ,
@InternetPrice varchar(50) ,
@InventoryAcctDollar numeric(18, 2) ,
@VehicleType varchar(50) ,
@DealerAccessoryCode varchar(50) ,
@AllInventoryAcctDollar numeric(18, 2) ,
@BestPrice varchar(50) ,
@InStock bigint ,
@AccountingMake varchar(50) ,
@GasDiesel varchar(max) ,
@BookValue varchar(10) ,
@FactoryAccessoryDescription varchar(max) ,
@TotalReturn varchar(10) ,
@TotalCost varchar(10) ,
@SS varchar(max) ,
@VehicleBody varchar(max) ,
@StandardEquipment varchar(max) ,
@Account varchar(max) ,
@CalculatedPrice varchar(10) ,
@OriginalCost varchar(10) ,
@AccessoryCore varchar(10) ,
@OtherDollar varchar(10) ,
@PrimaryBookValue varchar(10) ,
@AmountDue varchar(10) ,
@LicenseFee varchar(10) ,
@ICompany varchar(max) ,
@InvenAcct varchar(max) ,
@Field23 varchar(max) ,
@Field24 varchar(max) ,
@SalesCode varchar(max) ,
@BaseRetail varchar(10) ,
@BaseInvAmt varchar(10) ,
@CommPrice varchar(10) ,
@Price1 varchar(10) ,
@Price2 varchar(10) ,
@StickerPrice varchar(10) ,
@TotInvAmt varchar(10) ,
@OptRetail varchar(max) ,
@OptInvAmt varchar(10) ,
@OptCost varchar(10) ,
@Options varchar(max) ,
@Category varchar(max) ,
@Description varchar(max) ,
@Engine varchar(max) ,
@ModelType varchar(max) ,
@FTCode varchar(max) ,
@Wholesale varchar(max) ,
@Retail varchar(max) ,
@Draft varchar(max) ,
@Inventoryid int;
DECLARE Inventory_Cursor CURSOR FOR
SELECT * from [dbo].[FLATFILE_INVENTORY];
OPEN Inventory_Cursor
FETCH NEXT FROM Inventory_Cursor
INTO @FileType ,
@ACDealerID ,
@ClientDealerID ,
@DMSType ,
@StockNumber ,
@InventoryDate ,
@StockType ,
@DMSStatus ,
@InvoicePrice ,
@CostPack ,
@SalesCost ,
@HoldbackAmount ,
@ListPrice ,
@MSRP ,
@LotLocation ,
@TagLine ,
@Certification ,
@CertificationNumber ,
@VehicleVIN ,
@VehicleYear ,
@VehicleMake ,
@VehicleModel ,
@VehicleModelCode ,
@VehicleTrim ,
@VehicleSubTrimLevel ,
@Classification ,
@TypeCode ,
@VehicleMileage ,
@EngineCylinderCount ,
@TransmissionType ,
@VehicleExteriorColor ,
@VehicleInteriorColor ,
@CreatedDate ,
@LastModifiedDate ,
@ModifiedFlag ,
@InteriorColorCode ,
@ExteriorColorCode ,
@PackageCode ,
@CodedCost ,
@Air ,
@OrderType ,
@AgeDays ,
@OutstandingRO ,
@DlrAccessoryRetail ,
@DlrAccessoryCost ,
@DlrAccessoryDesc ,
@ModelDesc ,
@Memo1 ,
@Memo2 ,
@Weight ,
@FloorPlan ,
@Purchaser ,
@PurchasedFrom ,
@InternetPrice ,
@InventoryAcctDollar ,
@VehicleType ,
@DealerAccessoryCode ,
@AllInventoryAcctDollar ,
@BestPrice ,
@InStock ,
@AccountingMake ,
@GasDiesel ,
@BookValue ,
@FactoryAccessoryDescription ,
@TotalReturn ,
@TotalCost ,
@SS ,
@VehicleBody ,
@StandardEquipment ,
@Account ,
@CalculatedPrice ,
@OriginalCost ,
@AccessoryCore ,
@OtherDollar ,
@PrimaryBookValue ,
@AmountDue ,
@LicenseFee ,
@ICompany ,
@InvenAcct ,
@Field23 ,
@Field24 ,
@SalesCode ,
@BaseRetail ,
@BaseInvAmt ,
@CommPrice ,
@Price1 ,
@Price2 ,
@StickerPrice ,
@TotInvAmt ,
@OptRetail ,
@OptInvAmt ,
@OptCost ,
@Options ,
@Category ,
@Description ,
@Engine ,
@ModelType ,
@FTCode ,
@Wholesale ,
@Retail ,
@Draft ;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @VehicleVIN ;
-- ****************** insert into Inventory Table ***********
INSERT INTO INVENTORY
IconicDealerID,
StockNumber,
DMSType,
InventoryDate
VALUES (@ClientDealerID,@StockNumber,@DMSType,@InventoryDate);
set @Inventoryid = scope_identity();
PRINT @Inventoryid;
--Insert into Inventory_Details Table
INSERT INTO [INVENTORY_DETAILS]
InventoryID,
StockType,
DMSStatus,
LotLocation,
TagLine,
Certification,
CertificationNumber,
CreatedDate,
LastModifiedDate,
ModifiedFlag,
PackageCode,
OrderType,
AgeDays,
OutstandingRO,
Memo1,
Memo2,
Purchaser,
PurchasedFrom,
DealerAccessoryCode,
InStock,
AccountingMake,
SS,
Account,
AccessoryCore,
ICompany,
InvenAcct,
Field23,
Field24,
SalesCode,
Draft,
FTCode
VALUES (
@InventoryID,
@StockType,
@DMSStatus,
@LotLocation,
@TagLine,
@Certification,
@CertificationNumber,
@CreatedDate,
@LastModifiedDate,
@ModifiedFlag,
@PackageCode,
@OrderType,
@AgeDays,
@OutstandingRO,
@Memo1,
@Memo2,
@Purchaser,
@PurchasedFrom,
@DealerAccessoryCode,
@InStock,
@AccountingMake,
@SS,
@Account,
@AccessoryCore,
@ICompany,
@InvenAcct,
@Field23,
@Field24,
@SalesCode,
@Draft,
@FTCode
--Insert into Inventory_Amount Table
INSERT INTO [dbo].[INVENTORY_AMOUNT]
InventoryID,
AllInventoryAcctDollar,
OtherDollar,
PrimaryBookValue,
AmountDue,
LicenseFee,
CalculatedPrice,
OriginalCost,
BookValue,
TotalReturn,
TotalCost,
DlrAccessoryRetail,
DlrAccessoryCost,
DlrAccessoryDesc,
InternetPrice,
InventoryAcctDollar,
BestPrice,
Weight,
FloorPlan,
CodedCost,
InvoicePrice,
CostPack,
SalesCost,
HoldbackAmount,
ListPrice,
MSRP,
BaseRetail,
BaseInvAmt,
CommPrice,
Price1,
Price2,
StickerPrice,
TotInvAmt,
OptRetail,
OptInvAmt,
OptCost,
Wholesale,
Retail
VALUES (
@InventoryID,
@AllInventoryAcctDollar,
@OtherDollar,
@PrimaryBookValue,
@AmountDue,
@LicenseFee,
@CalculatedPrice,
@OriginalCost,
@BookValue,
@TotalReturn,
@TotalCost,
@DlrAccessoryRetail,
@DlrAccessoryCost,
@DlrAccessoryDesc,
@InternetPrice,
@InventoryAcctDollar,
@BestPrice,
@Weight,
@FloorPlan,
@CodedCost,
@InvoicePrice,
@CostPack,
@SalesCost,
@HoldbackAmount,
@ListPrice,
@MSRP,
@BaseRetail,
@BaseInvAmt,
@CommPrice,
@Price1,
@Price2,
@StickerPrice,
@TotInvAmt,
@OptRetail,
@OptInvAmt,
@OptCost,
@Wholesale,
@Retail
--Insert into Inventory_Vehicle Table
INSERT INTO [dbo].[INVENTORY_VEHICLE]
InventoryID,
InteriorColorCode,
ExteriorColorCode,
Air,
ModelDesc,
VehicleType,
VehicleVIN,
VehicleYear,
VehicleMake,
VehicleModel,
VehicleModelCode,
VehicleTrim,
VehicleSubTrimLevel,
Classification,
TypeCode,
VehicleMileage
VALUES (
@InventoryID,
@InteriorColorCode,
@ExteriorColorCode,
@Air,
@ModelDesc,
@VehicleType,
@VehicleVIN,
@VehicleYear,
@VehicleMake,
@VehicleModel,
@VehicleModelCode,
@VehicleTrim,
@VehicleSubTrimLevel,
@Classification,
@TypeCode,
@VehicleMileage
-- Move cursor to Next record
FETCH NEXT FROM Inventory_Cursor
INTO @FileType ,
@ACDealerID ,
@ClientDealerID ,
@DMSType ,
@StockNumber ,
@InventoryDate ,
@StockType ,
@DMSStatus ,
@InvoicePrice ,
@CostPack ,
@SalesCost ,
@HoldbackAmount ,
@ListPrice ,
@MSRP ,
@LotLocation ,
@TagLine ,
@Certification ,
@CertificationNumber ,
@VehicleVIN ,
@VehicleYear ,
@VehicleMake ,
@VehicleModel ,
@VehicleModelCode ,
@VehicleTrim ,
@VehicleSubTrimLevel ,
@Classification ,
@TypeCode ,
@VehicleMileage ,
@EngineCylinderCount ,
@TransmissionType ,
@VehicleExteriorColor ,
@VehicleInteriorColor ,
@CreatedDate ,
@LastModifiedDate ,
@ModifiedFlag ,
@InteriorColorCode ,
@ExteriorColorCode ,
@PackageCode ,
@CodedCost ,
@Air ,
@OrderType ,
@AgeDays ,
@OutstandingRO ,
@DlrAccessoryRetail ,
@DlrAccessoryCost ,
@DlrAccessoryDesc ,
@ModelDesc ,
@Memo1 ,
@Memo2 ,
@Weight ,
@FloorPlan ,
@Purchaser ,
@PurchasedFrom ,
@InternetPrice ,
@InventoryAcctDollar ,
@VehicleType ,
@DealerAccessoryCode ,
@AllInventoryAcctDollar ,
@BestPrice ,
@InStock ,
@AccountingMake ,
@GasDiesel ,
@BookValue ,
@FactoryAccessoryDescription ,
@TotalReturn ,
@TotalCost ,
@SS ,
@VehicleBody ,
@StandardEquipment ,
@Account ,
@CalculatedPrice ,
@OriginalCost ,
@AccessoryCore ,
@OtherDollar ,
@PrimaryBookValue ,
@AmountDue ,
@LicenseFee ,
@ICompany ,
@InvenAcct ,
@Field23 ,
@Field24 ,
@SalesCode ,
@BaseRetail ,
@BaseInvAmt ,
@CommPrice ,
@Price1 ,
@Price2 ,
@StickerPrice ,
@TotInvAmt ,
@OptRetail ,
@OptInvAmt ,
@OptCost ,
@Options ,
@Category ,
@Description ,
@Engine ,
@ModelType ,
@FTCode ,
@Wholesale ,
@Retail ,
@Draft ;
END
CLOSE Inventory_Cursor;
DEALLOCATE Inventory_Cursor;
GO
SET ANSI_PADDING OFF
GO
Arunraj Kumar -
Problem When Try to add Master data record for User define form
Hi,
I have made one user define form. And assign UDO and fields proerly in form.
But when I try to add the record from the form it will give me error
Invalid Code [Operation Master -Code] [Message 173-36]
I have already bind the code field of the table to one field in the screen painter.
Please give me the reply.
Regards,
Gunjan Shukla.Dear Shukla
Can you please try to do the binding in the code (after loading the from).
Doing that, do you still have the problem?
Best regards,
Miki -
Creating a Trigger for Deleting the records from a parent Table
I am new to creating Trigger
We will need several small tables that will be used to store any records that are deleted by the owner of the table. These will likely need a trigger where we would Delete from the parent table and on that Delete populate the child table with the previous record's data.
Please give me a pseudo code for this
Thanks
John
Edited by: user10750995 on Dec 30, 2008 9:06 AMSomething like this:
CREATE OR REPLACE TRIGGER trg_my_table_hist
AFTER DELETE
ON my_table
FOR EACH ROW
BEGIN
INSERT INTO Hist_MyTable
( column1, column2, ..., DELETION_DATE)
VALUES
(:OLD.column1, :OLD.column2, ...., SYSDATE);
END;
/My_Table is your main table. When a row is deleted, the trigger will be fired and copy the deleted row to another table called Hist_My_Table. I'm supposing that the history table has all columns as they are defined in main tables plus a column named DELETION_DATE.
My experience indicates that, probably, it's a good idea maintain update history and the user. But it depends on your requests.
Regards,
Miguel -
SPLIT data-record AT delimiter into table-fieldname
Hi all,
I have the following SPLIT statement. But unable to split into respective field in an internal table. I'm using the standard delimeter.
Please help me how to create a file using the delimeter w_delimeter.
When I create the file with separated by '#' even it is not spliting.
w_delimeter TYPE c value cl_abap_char_utilities=>horizontal_tab.
SPLIT data-record AT w_delimeter INTO i_0208-pernr
i_0208-begda
i_0208-endda
i_0208-wtart
i_p0208-allpc.
Thanks,
PrasadHi Prasad,
it should work try this bellow piece of code.
REPORT ZTEST_A.
data: Begin of itab occurs 1,
name(30),
street(30),
Apt(3),
city(30),
state(2),
zipcode(5),
end of itab,
text1(250),
text2(250).
Text1 = 'Jacson 3 xyz dr B4 abcd DE 12345'.
Text2 = 'Edward 3 Caaa dr B4 pqr DE 54623'.
split text1 AT ' ' into itab-name itab-street itab-Apt
itab-city itab-state itab-zipcode.
append itab.
split text2 AT ' ' into itab-name itab-street itab-Apt
itab-city itab-state itab-zipcode.
append itab.
thanks,
Venkat -
Insert statement does not insert all records from a partitioned table
Hi
I need to insert records in to a table from a partitioned table.I set up a job and to my surprise i found that the insert statement is not inserting all the records on the partitioned table.
for example when i am using select statement on to a partitioned table
it gives me 400 records but when i insert it gives me only 100 records.
can anyone help in this matter.INSERT INTO TABLENAME(COLUMNS)
(SELECT *
FROM SCHEMA1.TABLENAME1
JOIN SCHEMA2.TABLENAME2a
ON CONDITION
JOIN SCHEMA2.TABLENAME2 b
ON CONDITION AND CONDITION
WHERE CONDITION
AND CONDITION
AND CONDITION
AND CONDITION
AND (CONDITION
HAVING SUM(COLUMN) > 0
GROUP BY COLUMNS -
Deadlock when deleting from rsstatmanpsa during DSO activation
We are experiencing intermittent Oracle deadlocks during DSO activation in our BI system. The deadlocks occur when the following SQL statement is executed:
delete from rsstatmanpsa where
partnr >= l_s_status-rnr_sid and
psa = l_s_status-dta.
This is at line 83 of the SET STATUS method of class CL_RSSM_STATMAN. (See below for runtime error details.)
When these errors occur the background job for the DSO activation is cancelled with the message ABAP/4 processor: DBIF_RSQL_SQL_ERROR. Strangely, when this occurs as part of a process chain, the status of the process variant does not get updated until/unless someone displays the process chain log, at which point the status changes and follow-on events are triggered. In other words, the process chain does not seem to be receiving word that the DSO activation process has abended, so we do not receive alerts that a problem has occurred.
Has anyone else experienced this issue?
Thanks,
Bob
P.S. We are running BI 7.0, Patch Level 15 on Oracle 10.2.0.4.0
Runtime Errors DBIF_RSQL_SQL_ERROR
Exception CX_SY_OPEN_SQL_DB
Error analysis
An exception occurred that is explained in detail below.
The exception, which is assigned to class 'CX_SY_OPEN_SQL_DB', was not caught
in
procedure "SET_STATUS" "(METHOD)", nor was it propagated by a RAISING clause.
How to correct the error
Database error text........: "ORA-00060: deadlock detected while waiting for
resource"
Internal call code.........: "[RSQL/DELE/RSSTATMANPSA ]"
Please check the entries in the system log (Transaction SM21).
If the error occures in a non-modified SAP program, you may be able to
find an interim solution in an SAP Note.
If you have access to SAP Notes, carry out a search with the following
keywords:
"DBIF_RSQL_SQL_ERROR" "CX_SY_OPEN_SQL_DB"
"CL_RSSM_STATMAN===============CP" or "CL_RSSM_STATMAN===============CM008"
"SET_STATUS"
If you cannot solve the problem yourself and want to send an error
notification to SAP, include the following information:
1. The description of the current problem (short dump)
To save the description, choose "System->List->Save->Local File
(Unconverted)".
2. Corresponding system log
Display the system log by calling transaction SM21.
Restrict the time interval to 10 minutes before and five minutes
after the short dump. Then choose "System->List->Save->Local File
(Unconverted)".
3. If the problem occurs in a problem of your own or a modified SAP
program: The source code of the program
In the editor, choose "Utilities->More
Utilities->Upload/Download->Download".
4. Details about the conditions under which the error occurred or which
actions and input led to the error.
The exception must either be prevented, caught within proedure
"SET_STATUS" "(METHOD)", or its possible occurrence must be declared in the
RAISING clause of the procedure.
To prevent the exception, note the following:
Information on where terminated
Termination occurred in the ABAP program "CL_RSSM_STATMAN===============CP" -
in "SET_STATUS".
The main program was "RSPROCESS ".
In the source code you have the termination point in line 83
of the (Include) program "CL_RSSM_STATMAN===============CM008".
The program "CL_RSSM_STATMAN===============CP" was started as a background job.
Job Name....... "BI_PROCESS_ODSACTIVAT"
Job Initiator.. "ALEREMOTE"
Job Number..... 05302800
The termination is caused because exception "CX_SY_OPEN_SQL_DB" occurred in
procedure "SET_STATUS" "(METHOD)", but it was neither handled locally nor
declared
in the RAISING clause of its signature.
The procedure is in program "CL_RSSM_STATMAN===============CP "; its source
code begins in line
1 of the (Include program "CL_RSSM_STATMAN===============CM008 ".
Source Code Extract
Line
SourceCde
53
if i_with_internal_check is initial.
54
l_s_status = i_s_status.
55
call function 'RSSM_GET_TIME'
56
importing
57
e_timestamps = l_s_status-ts_last_changed.
58
if l_s_status-ts_proc_started <= '10000101000000'.
59
l_s_status-ts_proc_started = l_s_status-ts_last_changed.
60
endif.
61
if l_s_status_exist is initial.
62
insert rsstatmanstatus from l_s_status.
63
if sy-subrc <> 0.
64
message x000.
65
endif.
66
else.
67
modify rsstatmanstatus from l_s_status.
68
if sy-subrc <> 0.
69
message x000.
70
endif.
71
endif.
72
delete from rsstatmanpart where
73
rnr = l_s_status-rnr and
74
dta = l_s_status-dta and
75
dta_type = l_s_status-dta_type.
76
select single * from rsstatmanpsa into l_s_psa where
77
rnr = l_s_status-rnr and
78
psa = l_s_status-dta.
79
if sy-subrc = 0.
80
delete from rsmdatastate_psa where
81
psa = l_s_status-dta and
82
type = l_s_status-dta_type.
>>>>>
delete from rsstatmanpsa where
84
partnr >= l_s_status-rnr_sid and
85
psa = l_s_status-dta.
86
else.
87
select single * from rsmdatastate_psa into l_ds_psa where
88
psa = l_s_status-dta and
89
type = l_s_status-dta_type.
90
if sy-subrc = 0 and l_ds_psa-sid_checked > l_s_status-rnr_sid.
91
delete from rsmdatastate_psa where
92
psa = l_s_status-dta and
93
type = l_s_status-dta_type.
94
delete from rsstatmanpsa where
95
partnr >= l_s_status-rnr_sid and
96
psa = l_s_status-dta.
97
endif.
98
endif.
99
if i_with_commit = 'X'.
100
call function 'DB_COMMIT'.
101
endif.
102
endif.Walter,
Thanks for the suggestion. This is the same recommendation I just received from SAP.
We are currently in the midst of regression testing for a major release, so cannot implement these corrections immediately. I'll post again after we implement the corrections and let you know if they solve our problem.
Thanks again.
Bob -
How to restore deleted, but not erased, data?
I just restored my iphone, from an older backup. itunes says that the information is deleted from the device, but not erased. How do I recover this deleted information?
I have never seen a message where iTunes states that data is deleted but it has not been erased.
The only way that you can recover that data - and data is a somewhat vague term because it can refer to so many different things such as documents, contacts, notes, etc. - is to restore from a backup that contains that data or if you have a local copy of that data stored somewhere on your computer you can import it again via File Sharing, email, DropBox, etc.
So I guess at this point the next question is what data are you trying to recover? -
Be make lost grid in xaml when it be not received data???
I want be make lost #f5f5f5 background of gird when it no having data.How? I used to IConverter but it still that.
Public IdVisiable
get;set;
<Grid.RowDefinitions>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid Grid.Row="0" Visibility="{Binding isVisiable, Converter={StaticResource visisableconvert}}">
<StackPanel Orientation="Vertical" >Hi Grey Herney,
>>I want be make lost #f5f5f5 background of gird when it no having data
Could you please try to describe more about your question? It will be better if you can post a simple complete reproduce project in here.
Best Regards,
Amy Peng
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click
HERE to participate the survey. -
How to clear/delete diagnostic and usage data records?
The records under diagnostic and usage getting more each day and i have no ideas on how to delete it. Have try to sync with pc via iTunes and off the function under setting/privacy/location service/systems services/diagnostic and usage. Non works, please HELP!
FYI
Complete guide to using iOS 6
http://howto.cnet.com/ios-6-complete-guide/
Guide to Built-In Apps on iOS
https://sites.google.com/site/appleclubfhs/support/advice-and-articles/guide-to- built-in-apps-ios
You can download a complete iOS 5 iPad User Guide and iOS 6 iPad User Guide here: http://support.apple.com/manuals/ipad/
Also, Good Instructions http://www.tcgeeks.com/how-to-use-ipad-2/
Apple - iPad - Guided Tours
http://www.apple.com/ipad/videos/
Apple iPad Guided Tours - Watch the videos see all the amazing iPad apps in action. Learn how to use FaceTime, Mail, Safari, Videos, Maps, iBooks, App Store, and more.
http://www.youtube.com/watch?v=YT2bD0-OqBM
http://www.youtube.com/watch?v=ROY4tLyNlsg&feature=relmfu
http://www.youtube.com/watch?v=QSPXXhmwYf4&feature=relmfu
How to - Articles & User Guides & Tutorials
http://www.iphone-mac.com/index.php/Index/howto/id/4/type/select
iPad How-Tos http://ipod.about.com/lr/ipad_how-tos/903396/1/
You can download this guide to your iPad.
iPad User Guide for iOS 5
http://itunes.apple.com/us/book/ipad-user-guide-for-ios-5/id470308101?mt=11
Cheers, Tom -
help
You will need to get the file into the Numbers app and there are a few different ways to do that. You could email the file and then use the "Open In" feature (tap and hold down on the open file in the email and select "Open In Numbers" from the resulting window) use iOS file sharing or maybe DropBox.
I use file sharing with Pages which is another iWorks app. Read this for more information.
http://support.apple.com/kb/HT4094
Maybe you are looking for
-
How to disable write to redo log file in oracle7.3.4
in oracle 8, alter table no logged in redo log file like: alter table tablename nologging; how to do this in oracle 7.3.4? thanks.
-
This is a question for a mini iPad... I am trying to download an app and keep getting this error message: "Could not sign in. An unknown error has occurred. I have tried shutting down and restarting. I've tried changing the password. I get the error
-
My iMac stopped connectin to an HP8500 A910 printer. Can anyone help?
My iMac is running Mac OS X Lion 10.7.5. Two weeks ago, my HP8500 A910 wireless printer stopped working with iMac. To trouble shoot, I tried the following: - checked that my HP printer has a wireless singal - checked my network rounter to ensure th
-
Need help in archiveing and deleting records
Hi frnds I wrote a procedure to archive the records and delete the archived one but after inserting and deleting the tot counter is not working and its showing 1 record inserted and i didnt tried the deletion part,pls find my code and how to get the
-
How to permanently save the color settings in terminal.app
Hi, I have configured the "ls" command in the terminal.app to give colored outputs. However, I realised that for some reason the color-set used is designed for a light-colored background. When I use "white on black", the default blue color of the dir