Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
rahulm_32003
Starting Member
7 Posts |
Posted - 2012-09-03 : 13:35:55
|
| I am new to DB Programming.Can some one guide to modify it as per SQLServer sytnaxCREATE OR REPLACE procedure TRANS_DELETE ( result OUT types.ref_cursor , startDate1 IN TIMESTAMP , endDate1 IN TIMESTAMP , boolean1 IN numeric) AS TYPE lt_trans_id IS TABLE OF trans.trans_id%TYPE ; la_trans_id lt_trans_id; -- Array on trans_id's TYPE lt_trans_auth_id IS TABLE OF trans_auth.trans_auth_id%TYPE; la_trans_auth_id lt_trans_auth_id; -- Driving Cursor for purgable trans_id's CURSOR c_trans_id IS SELECT trans_id FROM TRANS WHERE SCHEDULED=1 AND ALLOWED=1 AND TRAINING=boolean1 -- AND ROWNUM<20000 ; CURSOR c_trans_auth_id IS SELECT t.trans_auth_id FROM TRANS_AUTH t WHERE t.SCHEDULED=1 AND t.ALLOWED=1 AND trans_auth_id NOT IN ( SELECT trans_auth_id FROM TRANS_LINE_AUTH_XREF WHERE trans_auth_id=t.trans_auth_id UNION ALL SELECT trans_auth_id FROM TRANS_AUTH_XREF WHERE trans_auth_id=t.trans_auth_id UNION ALL SELECT trans_auth_id FROM TRANS_TENDER_AUTH_XREF WHERE trans_auth_id=t.trans_auth_id ); array_size NUMBER:=10000; -- process array size -- careful uses pga .. session memory not database sga memory -- number of rows to process each time expected_trans NUMBER:=0; processed NUMBER:=0; expected_trans_auth NUMBER:=0; processed_trans_auth NUMBER:=0; long_ops_rindex PLS_INTEGER; long_ops_slno PLS_INTEGER; active_table VARCHAR2(30); BEGIN DBMS_APPLICATION_INFO.set_module(module_name => 'SP_PURGETRANS_DELETE', action_name => 'Expected Calculation'); --DBMS_OUTPUT.PUT_LINE('Start EXPECTED Calculation '||to_char(sysdate,'MM/DD HH24:MI:SS')); -- Retrieve the count of records to be deleted SELECT COUNT(TRANS_ID) INTO expected_trans FROM TRANS WHERE SCHEDULED = 1 AND ALLOWED=1 AND TRAINING=boolean1; --DBMS_OUTPUT.PUT_LINE('... expected result count ('||TO_CHAR(expected_trans,'9999999999')||') '||to_char(sysdate,'MM/DD HH24:MI:SS')); OPEN c_trans_id; LOOP -- loop though in array_size increments FETCH c_trans_id BULK COLLECT INTO la_trans_id LIMIT array_size; -- Updated for VI 1298 purge training transaction process -- Deleting records from Signature table -- *** Has to occur before TRANS_TENDER_SIGNATURE ... which currently is not in this routine. -- ** Thus no dependancies FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM SIGNATURE s WHERE SIGNATURE_ID IN ( SELECT SIGNATURE_ID FROM TRANS_TENDER_SIGNATURE WHERE signature_id= s.signature_id AND trans_id = la_trans_id(i) ); -- Added as art of re-write FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_TENDER_SIGNATURE WHERE trans_id = la_trans_id(i); -- - Order was determined using a home grown depth first directed graph sort routine -- based on the constraint partent child dependancy tree -- FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_LINE_ASSOCIATE WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_CUSTOMER WHERE trans_id = la_trans_id(i); -- Added as art of re-write FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_AUTH_XREF WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_LINE_AUTH_XREF WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_TENDER_AUTH_XREF WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_ASSOCIATE WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_DISCOUNT_SPREAD WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_DISCOUNT WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_COUPON WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_LOCATION WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_TAX WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_LOST_AUTH WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_LN_PRMT_DTL WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_LINE_PROMPT WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_LINE_DISC WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_LINE_TAX WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_LINE_PRICE WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_LINE WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_PROMPT_DTL WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_PROMPT WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_TENDER WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_MULTI_CHANNEL WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_REBATE_XREF WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_REBATE WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_BOUNCEBACK WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS_CASH_OUT WHERE trans_id = la_trans_id(i); FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM SECURITY_OVERRIDE_LOG WHERE TRANSACTION_NUMBER IN ( SELECT x.TRANSACTION_NUMBER FROM TRANS x WHERE x.trans_id = la_trans_id(i) ); -- FORALL i IN la_trans_id.FIRST..la_trans_id.LAST -- DELETE FROM TRANSACTION_NUMBER WHERE trans_id = la_trans_id(i); -- Driving table ... last to be purged! FORALL i IN la_trans_id.FIRST..la_trans_id.LAST DELETE FROM TRANS WHERE trans_id = la_trans_id(i); COMMIT; processed:=processed+la_trans_id.COUNT; --DBMS_OUTPUT.PUT_LINE('... PROCESSED: '||PROCESSED||' '||to_char(sysdate,'MM/DD HH24:MI:SS')); DBMS_APPLICATION_INFO.SET_ACTION('Trans_id:'||processed||'/'||expected_trans); EXIT WHEN c_trans_id%NOTFOUND; END LOOP; close c_trans_id; |
|
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2012-09-03 : 14:56:07
|
| looks like Oracle code. This is MS SQL Server forum. please post in some Oracle forums like www.dbforums.com for getting Oracle specfific help------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/ |
 |
|
|
|
|
|