SQL delete

Jump to:

Sponsored Links

Next

1. Express 5250 PC CardHi,
Does anyone of you can possibly tell me if I can use a 5250 PC Express card
in a laptop running Windows 2000 and connect thru Twinax to an AS/400.
Where to start ?
Thanks,
Peter

3. find field in fileHi all,
i am trying locate a particular field within a file is there a
quick way of doing this or is this a manual process?
many thanks
IG

4. Using CREATE FUNCTIONDoes anyone have any experience using CREATE FUNCTION to call external
subroutines written in high-level languages? I have a routine named SUPLOW
that takes in a 30 character string, performs some intelligent upper-lower
case conversions, then returns the changed string. I need to access this
function from SQL
I tried creating a wrapper service program, but then I get various messages
about RCLRSC,etc.
--
Chip Milosch
Griffin Computing
XXXX@XXXXX.COM
Office: (630) 203-2904 /Cell: (847) 309-6220

5. Creating a Source FileI have created a library and want to create a file of type source in it. My
source records will not be longer than 80 characters. No matter what options
I chose the creation failed. What options do I need to set to create a
source file?

SQL delete

by 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

by 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

by 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

Similar Threads:

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...

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.

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

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.