SQL delete

as400

    Sponsored Links

    Next

  • 1. How to download a spool file into PC .txt file
    How to download a spool file into PC .txt file? Thanks all! Sam
  • 2. is it able to change font in printer emulation
    I am using the V5R4 iSeries Access and act as the printer emulation. I try to print in other font but failed. The font can't be change. So, Would you know whether it is possible or not?
  • 3. Synon/2E, Program Data Structure and Undefined Fields
    Hi All, we maintain a legacy Synon/2E (aka Cool:2E, etc) system. As a result of a recent disk fault I am attempting to move the system onto another AS400. After restoring the model library I applied model changes (going from an earlier version to 6.2) which resulted in the '*Job exec start date' field being renamed from EDT to ED7 and the '*Job submit/start date' field being renamed from SDT to SD7. To check everything still works I created a test file and tried to compile a Prompt Record function. If I include the Generation library in the model library list the ED7 and SD7 fields are not included in the Program data structure and the compile fails due to ED7 and SD7 being undefined. If I remove the Generation library from the model library list the ED7 and SD7 fields are included in the Program data structure but the compile fails due to the Generation library not being in the library list. Does anyone have any ideas how I might resolve this?
  • 4. PHP, CL and RPG
    "It is not as hard as it might look, but nowhere near the facilities of PHP. CL and even RPG has nothing like PHP arrays." interesting. I wonder what else is missing from PHP. networking libraries? (http, ftp, etc) XML parsing? (rss, soap, wdsl, etc) database conectivity? string handling functions? hash tables (arrays) ? object oriented programming (like any of us need that) classes overriding overloading modules user defined functions? (not executing other programs, but many functions inside a program) functions with variable parameter count file handling functions (like file_get_contents(), glob, ) I guess noone is rushing to write rss readers in CL, perhaps the [AS/400] system is just simply aging to death.
  • 5. QAS system refresh on AS/400
    We have SAP implemented on AS/400 V5R3 I550 system with two LPARs. We have Prod on one LPAR, QAS and DEV on other LPAR. I want to do QAS system refresh on AS/400. Please provide me with elaborate steps. Thanks in Advance, SR

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 66 guest