Hi,
Hope this helps:

CREATE DBPROC "xxx"."UPCREATEFORMULA" (IN MFRCODE
VARCHAR(5), IN TAGID VARCHAR(7), 
IN PRODID INTEGER, OUT AMT FIXED(11,2))
AS
VAR 
LSSTR VARCHAR(400); LSQLSTMT VARCHAR(800); LS_MFRCODE
VARCHAR(5); LS_TAGID  VARCHAR(7); 
LS_AMT  VARCHAR(100);
LI_PRODID INTEGER ;

BEGIN
LS_MFRCODE = MFRCODE;
LS_TAGID  = TAGID;
LI_PRODID = PRODID;
LSSTR = '0';

SELECT CHR(DECODE
(VPRATEFORMULA,NULL,0,VPRATEFORMULA)) FROM
xxx.CBRANDMFR,xxx.CPRODUCT WHERE
CPRODUCT.VPRODBRNDCODE = CBRANDMFR.VBRANDMFRCODE AND
CBRANDMFR.CTAGID = CPRODUCT.CTAGID AND VMFRBRANDCODE=
:ls_mfrcode AND CPRODUCT.IPRODUCTID= :li_prodid AND
CBRANDMFR.CTAGID= :ls_tagid;
    IF $RC = 0 THEN
    BEGIN
        FETCH INTO :lsstr;
    END;

IF LSSTR <> '0' THEN
 SELECT  :lsstr  FROM xxx.CPRODUCT, SYNERGY.CBRAND
WHERE CPRODUCT.VPRODBRNDCODE=CBRAND.VBRNDCODE AND
CPRODUCT.CTAGID=CBRAND.CTAGID AND CPRODUCT.CTAGID =
:ls_tagid AND IPRODUCTID = :li_prodid;
    IF $RC = 0 THEN
    BEGIN
        FETCH INTO :ls_amt;
        SET AMT = NUM(LS_AMT);
    END;

END;


=============================
--- Vinod Kumar Singh
<[EMAIL PROTECTED]> wrote:
> Hi all,
> 
> I am new to SAP / MAX DB. I am having problem with
> stored procedures as
> I am unable to find good documentation with detailed
> examples.
> Can anybody guide me how to use cursor inside
> another cursor in a stored
> procedures or what could be an equivalent to the
> following PostgreSQL
> procedure.
> 
> Thanks
> 
> Vinod
> 
>
========================================================
> /*It will post the O.K. items' qty. of a production
> slip into 
> mfg_item_stock table.*/
> 
> create or replace function mfg_item_stock_post
> (varchar) RETURNS integer
> AS'
> declare
>      slip ALIAS FOR $1;           -- Production Slip
> to be posted
>      plan_qty numeric(10, 2);     -- Planned qty.
> for a item
>      prod_qty numeric(10, 2);     -- Actual produced
> qty. for a item
>      item_type varchar(1);        -- Item type 
>      temp_stock numeric(12, 3);   
>      rm varchar(25);             
>      rm_gross numeric(12, 2);    
>      open_items integer;
>      prod_val RECORD;
>      jobcard_val RECORD;
>      affected_jc_val RECORD;
>      bom RECORD;                
>         
> begin
>    --
>
==========================================================================
>    -- post the stock in mfg_item_stock table.
>    FOR prod_val IN  SELECT production_dept_code,
> production_item_code,  
>             production_item_qty FROM
> mfg_production_m M,
> mfg_production_d D
>               WHERE
> M.production_slip_no=D.production_slip_no
>               AND M.production_qa_flag=''A''  --
> Approved by QA
>               AND D.item_qa_flag=''O''
>               AND M.production_slip_no=slip LOOP
>               
>         -- ######### RM to be reduced for #########
>            
>         SELECT INTO item_type item_type_flag FROM
> mfg_item_p
>         WHERE
> item_item_code=prod_val.production_item_code;
>             
>         IF item_type = ''C'' THEN   -- reduce the
> Raw Material for
> component
>            SELECT INTO rm, rm_gross, temp_stock
> item_raw_material,
> item_rm_gross, COALESCE(stock_item_qty, 0) 
>            FROM mfg_item_p, mfg_item_stock 
>            WHERE
>
mfg_item_p.item_item_code=mfg_item_stock.stock_item_code
> 
>            AND
> item_tem_code=prod_val.production_item_code;
>               
>            if (temp_stock - rm_gross *
> prod_val.production_item_qty) < 0
> then 
>                RAISE EXCEPTION ''There is
> insufficient Raw Material to
> manufacture %.\nCan not post it.'',
> prod_val.production_item_code;
>              else 
>                 -- ######### reduce the raw material
> used #########
>                 UPDATE mfg_item_stock SET
> stock_item_qty=COALESCE(stock_item_qty, 0) - 
>                                             
> rm_gross *
> prod_val.production_item_qty 
>                 WHERE stock_item_code=rm 
>                 AND
> stock_dept_code=prod_val.production_dept_code;
>              end if;
>                 
>         ELSE 
>           if item_type = ''F'' or item_type = ''S''
> THEN   -- reduce the
> components
>              FOR bom IN SELECT sub_item_code,
> sub_item_qty FROM
> mfg_bom_m 
>                 WHERE
> main_item_code=prod_val.production_item_code 
>                 AND bom_version=(SELECT
> MAX(bom_version) FROM mfg_bom_m
> B 
>                              WHERE
> B.main_item_code=mfg_bom_m.main_item_code) LOOP 
>                                  
>                 SELECT INTO temp_stock
> COALESCE(stock_item_qty, 0) FROM
> mfg_item_stock 
>                 WHERE
> stock_item_code=bom.sub_item_code;
>                    
>                 if (temp_stock - bom.sub_item_qty *
> prod_val.production_item_qty) < 0 
>                     then
>                       RAISE EXCEPTION ''There is
> insufficient stock of %
> to manufacture %.\nCan not post it.''
>                                     ,
> bom.sub_item_code,
> prod_val.production_item_code;
>                   else
>                      -- ######### reduce the
> components used #########
>                      UPDATE mfg_item_stock SET
> stock_item_qty=COALESCE(stock_item_qty, 0) - 
>                                     
> bom.sub_item_qty *
> prod_val.production_item_qty 
>                      WHERE
> stock_item_code=bom.sub_item_code 
>                      AND
> stock_dept_code=prod_val.production_dept_code;
>                   end if;
>              end loop;
>           end if;
>         END IF;
> -- ######### add the stock of item produced
> #########
>         UPDATE mfg_item_stock SET
> stock_item_qty=COALESCE(stock_item_qty, 0) +
>                                                 
> prod_val.production_item_qty 
>         WHERE
> stock_item_code=prod_val.production_item_code 
>         AND
> stock_dept_code=prod_val.production_dept_code;
>    end loop;
> 
>    -- ######### set the stock posting flag and date
> #########
>    UPDATE mfg_production_m SET
> stock_posting_flag=''P'', 
>         stock_posting_date=current_date WHERE
> production_slip_no=slip;
> 
>    --
>
==========================================================================
>    -- Close individual items in jobcards if all
> planned qty is produced.
>    FOR jobcard_val IN SELECT production_jobcard_no,
> production_item_code, 
>                  production_item_qty
>                  FROM mfg_production_d D,
> mfg_production_m M
>                  WHERE D.production_slip_no=slip
>                  AND M.stock_posting_flag=''P''  --
> stock posted
>                  AND
> M.production_slip_no=D.production_slip_no
>                  AND D.item_qa_flag=''O'' LOOP
> 
>         UPDATE ppc_jobcard_d SET
> item_production_qty=COALESCE(item_production_qty, 0)
> + 
>                                               
> jobcard_val.production_item_qty 
>         WHERE
> jobcard_item_code=jobcard_val.production_item_code 
>         AND
>
jobcard_jobcard_no=jobcard_val.production_jobcard_no;
> 
>       -- select planned qty into plan_qty
>         SELECT INTO plan_qty jobcard_item_qty FROM
> ppc_jobcard_d
>         WHERE
> jobcard_item_code=jobcard_val.production_item_code 
>         AND
>
jobcard_jobcard_no=jobcard_val.production_jobcard_no;
> 
>       -- select produced qty into prod_qty
>         SELECT INTO prod_qty
> COALESCE(item_production_qty, 0)
>         FROM ppc_jobcard_d
>         WHERE
> jobcard_item_code=jobcard_val.production_item_code 
=== message truncated ===


__________________________________
Do you Yahoo!?
The New Yahoo! Shopping - with improved product search
http://shopping.yahoo.com

-- 
MaxDB Discussion Mailing List
For list archives: http://lists.mysql.com/maxdb
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to