Re: Stored Procedure
"Melissa Dougherty" <[email protected]>
| Newsgroups | gmane.comp.db.mysql.windows |
|---|---|
| Message-ID | <000201c69395$4ba2abc0$6400a8c0@denterprise1> |
I wish that would work.... but I really need to loop through a set of records and evaluated the results. I need to look at the doc_no, then doc_type, then check to see if the gj_dollar_amt are equal or sum to zero.... and a couple more things. If I really need to use two cursors... how do I setup the SP? I can seem to get the correct sequence for using two cursors. I can get one cursor to work just fine. Thanks for any help. Melissa ----- Original Message ----- From: <[email protected]> To: <[email protected]>; <[email protected]> Sent: Sunday, June 18, 2006 7:06 PM Subject: RE: Stored Procedure >I think what you are trying to do boils down to this > > INSERT INTO ar_no_ins_outs_delete > (doc_type,doc_no,ref_doc_no,gv_dollar_amt) > SELECT t1.doc_type, t1.doc_no, t1.ref_doc_no, > concat('-',t1.gv_dollar_amt) > FROM test.ar_no_ins_outs_temp AS t1, test.ar_no_ins_outs_temp AS t2 > WHERE t1.doc-type in ('PV','GV') > AND t2.doc_type in ('RG','RC','RT') > AND t1.doc_type = t2.doc_no > AND t1.ref_doc_no = t2.ref_doc_no > AND concat('-',t1.gv_dollar_amt) = t2.gv_dollar_amt > > It is always better to use joins than to use cursors. Cursors should > always be a last resort. Joins are MUCH more efficient. > > If gv_dollar_amt is a numeric type then you should replace > concat('-',t1.gv_dollar_amt) with -gv_dollar_amt. > > You should check that I have not mixed up any of the column names > because I can't test this. > > John B. > > -----Original Message----- > From: Melissa Dougherty [mailto:[email protected]] > Sent: Friday, 16 June 2006 4:46 AM > To: [email protected] > Subject: Stored Procedure > > I'm still new to the MySQL SPs.... Does anyone see a problem with this > code? > > DELIMITER $$ > > DROP PROCEDURE IF EXISTS `test`.`test_AuditRun_SP`$$ > CREATE PROCEDURE `test`.`test_AuditRun_SP`(OUT OblDocNo varchar(50), OUT > OBLCNT INT) > BEGIN > DECLARE done INT DEFAULT 0; > DECLARE Obldoctype varchar(10); > DECLARE Obldocno varchar(50); > DECLARE Oblrefdocno varchar(50); > DECLARE Obldollamt varchar(50); > DECLARE Recdoctype varchar(10); > DECLARE Recdocno varchar(50); > DECLARE Recrefdocno varchar(50); > DECLARE Recdollamt varchar(50); > DECLARE curObl1 CURSOR FOR SELECT > doc_type,doc_no,ref_doc_no,concat('-',gv_dollar_amt) FROM > test.ar_no_ins_outs_temp WHERE doc_type in ('PV','GV'); > DECLARE curRec2 CURSOR FOR SELECT > doc_type,doc_no,ref_doc_no,gv_dollar_amt FROM test.ar_no_ins_outs_temp > WHERE doc_type in ('RG','RC','RT'); > DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1; > > OPEN curObl1; > OPEN curRec2; > > REPEAT > FETCH curObl1 INTO Obldoctype, Obldocno, Oblrefdocno, Obldollamt; > FETCH curRec2 INTO Recdoctype, Recdocno, Recrefdocno, Recdollamt; > > IF NOT done THEN > > IF obldocno = recdocno and Oblrefdocno = Recrefdocno and > Obldollamt = Recdollamt THEN > > INSERT into ar_no_ins_outs_delete > (doc_type,doc_no,ref_doc_no,gv_dollar_amt) > values (Obldoctype, Obldocno, Oblrefdocno, Obldollamt); > > END IF; > END IF; > > UNTIL done END REPEAT; > > CLOSE curObl1; > CLOSE curRec2; > > END$$ > > DELIMITER ; > > > Thanks, > > Melissa > > -- > MySQL Windows Mailing List > For list archives: http://lists.mysql.com/win32 > To unsubscribe: http://lists.mysql.com/[email protected] > > -- MySQL Windows Mailing List For list archives: http://lists.mysql.com/win32 To unsubscribe: http://lists.mysql.com/[email protected]