December 14, 2009, 03:42 PM
TomGDeleting some rows from a table.
Hi,
I am trying to delete rows from a table and am having a hard time finding a good way to do this. With this in mind, I do not want to delete all rows, only those rows that meet a certain criteria.
The table to be deleted from does not have any keys, so I cannot use the 'delete the existing record' option on the target properties.
I also tried using a DBMS SQL type flow and had
parsing errors occur after I entered the sql code to delete the rows.
Should I be using a stored procedure type flow to do this? And if so, does anyone have any samples for this?
Thanks in advance.
Regards,
Tom
December 14, 2009, 04:19 PM
WazI would suggest using MODIFY with the NEXT statement.
This will step through the records, you will need to loop for each record to be deleted.
The only other option would be to TABLE the records out without the ones to be deleted, then clear the table and reload it.
December 14, 2009, 04:32 PM
Dan SatchellYou will probably need to create a stored procedure and use MODIFY/NEXT logic to delete the records. But you will want to run the stored procedure as part of a flow in order to get a log of the results. Your delete logic might look something like this:
MODIFY FILE <filename>
NEXT <column name>
ON NEXT IF <negative of your selection criteria for deleting> GOTO TOP ;
ON NEXT DELETE
ON NONEXT GOTO EXIT
DATA
END
December 14, 2009, 04:51 PM
TomGHi Waz and Dan,
Thanks for the quick response.
Tom
December 15, 2009, 07:38 AM
TobarTom,
I would worry about performance with the check each record/looping approach. I think the phrase "when doing database things, use a database tool" is a good phrase to live by. I would go the DBMS SQL route. Your "parsing error" might have been just some bad SQL. Send your delete statement. Set based deleting from tables (and adding/modifying) is what DBs are made for.
January 08, 2010, 01:45 PM
TomGForgot to update this posting. I used a stored procedure to call an sql statement that deleted
the rows from the table.
SQL DELETE FROM tableA where tableA_field >= &PARM1;
END