SQL delete

as400

    Sponsored Links

    Next

  • 1. ACGWEB
    Qualcuno usa le ACGWEB? Io ci sto provando, e vedo delle prestazioni pessime. Di sicuro non mi aspetto la risposta del 5250, ma aspettare 3 secondi solo per farmi vedere la maschera di richiesta cliente dell'anagrafica, mi sembra troppo. E la cosa pi?triste ?che pure IBM sembra brancolare nel buio. A me sembra un discorso di ottimizzazione dell'WebSphere. Nessuno sa qualcosa? Ciao e grazie 1000. Ferro.
  • 2. ToolBox JDBC driver question
    WAS use ToolBox JDBC driver connect a local as/400 java application to a remote as/400 (V5R2) of own a IASP(independent auxiliary storage pool ). if the remote database name is "test", the WAS can start this instance . But when the remote database name is "test.cn.ibm.com" , WAS can't start this instance. No IASP at the remote as/400, the instance always successfully start. RDB entry of the local as/400, Relational Database Remote Location test test.cn.ibm.com I can connect this remote as/400 by run STRSQL command on the local as400. And create a test java program of use ToolBox JDBC connect this remote database by use "test" or "test.cn.ibm.com" ,both of them are successfully . So I guess the WAS can't get the right remote database name of as/400 of own a IASP by ToolBox JDBC driver.
  • 3. lpar processor addition question
    hi, easy question for someone (i hope)... we've done several hardware upgrades to our 820 and lpar's for memory and other resources and the additional hardware is just tagged as new resources and available to be deployed across our lpar's. my question is, on the addition of a 2nd processor, is the new processor treated the same way as memory? ie, its just an available resource in the "bucket" that can be assigned to the lpar's? or does a processor upgrade require you to have to redo your lpar set up? thanks, jim
  • 4. How to Access Multiple Member File via JT400?
    Hi Is there a nice neat way of: 1. listing the members in a PF and 2. accessing each member using the Java AS400 Toolkit? I cannot see anything obvious on the AS400File or IFSJavaFile. Or do I have to issue OS400 commands to get this info? Thanks Shane -- Today I want to do something better than when I did it yesterday

SQL delete

Postby arrowcomputer » Tue, 13 Jul 2004 21:04:08 GMT

I am trying to delete records in one file based on criteria in a
second file.  I have the select running, and it select the proper
records.  I'm trying to figure the syntax of the delete.

The select :
select *  from SLALLO, MBADREP where ADAKDT > 1040731 and ADUUQ1
ADDCCD=ORTP and ADCVNB=ORDNO and ADFCNB=ITMSQ and ADHFCD < '50'     
order by ADCVNB   

The ADxxxx fields are from file MBADREP, the others from file SLALLO. 
I want to delete the SLALLO records that meet the where criteria.

My first attempt was (but failed syntax) - I tried several versions,
but I'm missing something here.

delete from                                                   
SLALLO, MBADREP  where ADAKDT > 1040731 and ADUUQ1                 
ADDCCD=ORTP and ADCVNB=ORDNO and ADFCNB=ITMSQ and ADHFCD < '50'

Re: SQL delete

Postby Charles Wilt » Tue, 13 Jul 2004 22:03:57 GMT

Terence,

SQL can't handle what you want to do.  You can't do a join during a 
delete.  You will need to make use of a subselect with an "in" or 
"exists" predicate.  For example, say I want to delete all order detail 
lines for orders more than a year old.  Problem is the order date only 
appears in the order header file.  So I'd need to to the following 
subselect:

delete from orderdtl
where ordernbr in (select ordernbr from orderhdr
                   where orderdate <= current_date + year(1)
                  )


exists is a little less straight forward.  At least for me as I don't 
use it often.  I think the following is correct:

delete from orderdtl A
where exists (select * from orderhdr B
              where orderdate <= current_date + year(1)
                and A.ordernum = B.ordernum
                and A.key2 = B.key2
             )


HTH,
Charles



In article < XXXX@XXXXX.COM >, 
 XXXX@XXXXX.COM  says...

Re: SQL delete

Postby LH » Tue, 13 Jul 2004 22:35:32 GMT

Terence I think it is possible.
Please make a good back-up (as always :)  of both files and try this:

Delete from SLALLO
where exists
(select  * from MBADREP
where   SLALLO .CONO = MBADREP .ADAENB
and  SLALLO.ORTP = MBADREP.ADDCCD
and SLALLO.ORDNO = MBADREP.ADCVNB
and SLALLO.ITMSQ = MBADREP.ADFCNB
and SLALLO.ITMSQ = MBADREP.ADFCNB
and  MBADREP.ADUUQ1 > 0
and MBADREP.ADZ93N < ADUUQ1
and MBADREP.ADA3CD  like '4%'
and MBADREP.ADHFCD < '50' )



Good luck
Loes



Re: SQL delete

Postby arrowcomputer » Wed, 14 Jul 2004 04:10:22 GMT

Thanks.   The "where exists" is the part I was missing.






Similar Threads:

1.Stupid SQL delete from logical file question

In DB2/400, if I run this statement:  delete from ordvcrec a where
not
exists(select * from i$paint b where a.part#=b.i$part)

Where ORDVCREC is a join logical of physical files ORDVALID and
ORDMASCREC, will the rows being deleted be the "logical" rows from
ORDVCREC only, or could physical rows (records) be wiped out in
ORDVALID or ORDMASCREC?


I am assuming that only logical rows will be deleted from ORDVCREC,
but I am afraid to try it...


Thanks for any and all opinions and answers...

2.SQL (Insert/Delete) Testing ?

Since SQL is very powerful is there an easy way to simulate whatif(s)
if such SQL commands are ran against a PF.  My current work around to
this is copying files and then evaluating my results, I did not know
if there is an easiear way to do this.  I have used the apyjrnchg
command and rmvjrnchg command to move records back etc but did not
know if there is a quick and easy way to do this, thanks.

3.SQL : to delete spaces in a string

4.SQL RPGLE cursor delete from view? -204

real world app with SQL (did SQL in school but never had to used it)
done SQL in excel macros and net.data, but never needed to manipulate
the data
and most have been "select * from file with status = 'A'"...simple
so...now i am going complex

i have a huge select statement joining 6 files, with some selection
once i read it in, i need to delete a row if it meets a certain type,
then read the previous row and delete it also.

heres the code
i have taken variable names out, shortened some code(to protect the
innocent)

my problem is the delete, i get a SQLCOD = -204 in which the 
DSPMSGD RANGE(SQL0204) MSGF(QSQLMSG) is a whole lotta help

C/exec sql                                                         
C+ declare C1 dynamic scroll cursor for                  
C+ select t1.f1,t1.f2,t1.f2 ...                                       
C+ as   tview                                                      
C+ from CSHDET T1, CSHSUM T2, INVMST T3, CUSTH T4, CUSADRL1 T5,    
C+      MSTZEM T6                                                  
C+ where t1.f1 = t2.f1    and                          
C+       t1.f2 = t2.f2     and                          
C+ ....
C+ order by f1, f2...
C/end-exec                                                         

C/exec sql  
C+ open  C1 
C/end-exec  

C                   dou       SQLCOD <> 0  

C/exec sql                  
C+ fetch C1 into :f1,   
C+          :f2,         
C+          :f3,        
C+ ...
C/end-exec                  

C                   if        SQLCOD =  0                             
C                   if        f3 = '11'
                                                                      
C/exec sql                                                            
C+  delete from tview where current of C1                             
C/end-exec                                                            

C/exec sql                          
C+ fetch PRIOR from C1 into :f1,
C+          :f2,                 
C+ ...
C/end-exec                          

C/exec sql                                                            
C+  delete from tview where current of C1                             
C/end-exec                                                            

C                   endif  
C                   enddo  

C/exec sql                 
C+ close C1                
C/end-exec                 


initially i had it just selecting and printing records out just so i
could get the SQL RPG concepts down, then i added in the deleting

i think i am not understanding the "view" and "cursor" 

thanx in advance

5.SQL on Fire - Mass Deleting Data.

Linux Db2 LUW V8 FP 15

I was readiong Serge SQL on Fire presentation (part 2), and there is
a slide that shows how to mass delete data using procedures. Something
like:

loop: LOOP
DELETE FROM  (SELECT 1 FROM Table WHERE InvDate <= dt   FETCH FIRST
1000 ROWS ONLY) AS D;
IF SQLCODE = 100 THEN LEAVE loop;
END IF;
COMMIT;
END LOOP loop;

I have studied the access plan of the statement above, and compared it
to the plan of the statements my application runs (a simple 'delete
from table where ID=? and timestamp between ? and ?').

The plans are exactly the same, with the same Total Cost.

Question: Should I expect delete performance improvement if I use
procedures with Fetch First X rows, like Serge example ?  How does
this compare to single DELETE statements, in terms of performance ?

Thanks in advance.

-Michel.

6. * * * Important Please Delete * * * ( 666 asterisks deleted )

7. catch sql exceptions in sql procedure

8. exec more than 1 sql statement within an sql procedure handler



Return to as400

 

Who is online

Users browsing this forum: No registered users and 36 guest