MySql Procedure with Cursor, Cumulative Sum, Auto Increment Column in Select Line & Procedure Call with a procedure

MySql Procedure with Cursor, Cumulative Sum, Auto Increment Column in Select Line & Procedure Call with a procedure...

Procedure with Cursor
1:  DELIMITER $$  
2:  DROP PROCEDURE IF EXISTS `dbName`.`myProc1` $$  
3:  CREATE PROCEDURE `myProc1`()  
4:  BEGIN  
5:       DECLARE l_id INT;  
6:       DECLARE l_rate INT;  
7:       DECLARE no_more_rate INT;  
8:    DECLARE bal_rate_csr CURSOR FOR  
9:       SELECT distinct rate  
10:       FROM tmp1;  
11:    DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more_rate=1;  
12:    DROP TABLE IF EXISTS tmp2;  
13:    create TABLE tmp2 as  
14:    select *,0 bqty from tmp1;  
15:    truncate table tmp2;  
16:    SET no_more_rate=0;  
17:    OPEN bal_rate_csr;  
18:    bal_rate_loop:WHILE(no_more_rate=0) DO  
19:     FETCH bal_rate_csr INTO l_rate;  
20:     IF no_more_rate=1 THEN  
21:       LEAVE bal_rate_loop;  
22:     END IF;  
23:   set @tt=0;  
24:   insert into tmp2(rdate,dsc,prd_id,rec_qty,cons_qty,bal_qty,rate,rowid,row_count,balqty,bqty)  
25:   select *,@tt:=@tt+bal_qty+rec_qty-cons_qty as balqty from tmp1  
26:   where rate=l_rate  
27:   order by row_count;  
28:   END WHILE bal_rate_loop;  
29:   CLOSE bal_rate_csr;  
30:  SET no_more_rate=0;  
31:  END $$  
32:  DELIMITER ;  



Procedure with Cumulative Sum, Auto Increment Column in Select Line & Procedure Call with a procedure
1:  DELIMITER $$  
2:  DROP PROCEDURE IF EXISTS `dbName`.`sp_product_ledger` $$  
3:  CREATE PROCEDURE `sp_product_ledger`(prdid int,FromDate DateTime, ToDate DateTime,brcode varchar(45) )  
4:  BEGIN  
5:   DROP TEMPORARY TABLE IF EXISTS tmp;  
6:   create temporary table tmp as  
7:   /* Opening Qty,Rate,Value */  
8:   select DATE_SUB(FromDate, INTERVAL 1 DAY) rdate,'Carried Over Balance' dsc,r.prd_id,0 rec_qty,0 cons_qty,(r.qty-IFNULL(c.qty,0)) bal_qty,r.rate,0 rowid  
9:   from  
10:   (SELECT d.prd_id,sum(d.qty) qty,d.rate FROM challan c, challan_details d  
11:   where c.br_code=brcode and d.prd_id=prdid and c.id=d.chn_id and c.chn_date<FromDate  
12:   group by d.prd_id,d.rate) r  
13:   left outer join  
14:   (SELECT d.prd_id,sum(d.qty) qty,d.rate FROM comsumed c,consumed_details d  
15:   where d.prd_id=prdid and c.id=d.cons_id and c.cons_date<FromDate  
16:   group by d.prd_id,d.rate) c  
17:   on r.prd_id=c.prd_id and r.rate=c.rate;  
18:  /* Report Month Receive Qty,Rate,Value Start*/  
19:   insert into tmp(rdate,dsc,prd_id,rec_qty,cons_qty,bal_qty,rate,rowid)  
20:   SELECT c.chn_date rdate,'Receive' dsc,d.prd_id prd_id,d.qty rec_qty,0 cons_qty,0 bal_qty,d.rate, '1' rowid  
21:   FROM challan c, challan_details d  
22:   where c.br_code=brcode and d.prd_id=prdid and c.id=d.chn_id and  
23:   c.chn_date>=FromDate and c.chn_date<=ToDate;  
24:  /* Report Month Receive Qty,Rate,Value End*/  
25:  /* Report Month Consumed Qty,Rate,Value Start*/  
26:   insert into tmp(rdate,dsc,prd_id,rec_qty,cons_qty,bal_qty,rate,rowid)  
27:   SELECT c.cons_date rdate,'Issue' dsc,d.prd_id prd_id,0 rec_qty,d.qty cons_qty,0 bal_qty,d.rate, 2 rowid  
28:   FROM comsumed c, consumed_details d  
29:   where c.br_code=brcode and d.prd_id=prdid and c.id=d.cons_id and  
30:   c.cons_date>=FromDate and c.cons_date<=ToDate;  
31:  /* Report Month Receive Qty,Rate,Value End*/  
32:  /*Report Select Query Start */  
33:     /* select prd_id,p.prd_name,qty opn_qty,(qty*rate) opn_amt,rec_qty,cons_qty,rate,(qty+rec_qty-cons_qty) cls_qty,((qty+rec_qty-cons_qty)*rate) cls_amt  
34:      from tmp t,product p  
35:      where t.prd_id=p.id;  
36:      */  
37:   /*DECLARE cur11 CURSOR FOR SELECT rec_qty,cons_qty,bal_qty,rate from tmp ;*/  
38:   set @a=0;  
39:   set @tt=0;  
40:   set @i =0;  
41:   DROP TABLE IF EXISTS tmp1;  
42:   create TABLE tmp1 as  
43:   select *,@a:=@a+1 as row_count,@tt:=@tt+bal_qty+rec_qty-cons_qty as balqty from tmp  
44:   order by rdate,rowid;  
45:    /*  set @tg=0;  
46:     select @tg:=count(*) ff from tmp1;  
47:    WHILE @i < @tg DO  
48:      set @i =@i+1;  
49:      set @tot=0;  
50:      set @ltot=0;  
51:     select @ltot:=sum(bal_qty) from tmp1 where rowid=0 and rate=(select rate from tmp1 where row_count=@i);  
52:      select @tot:=sum(@ltot+sum(rec_qty-cons_qty)) from tmp1 where row_count<=@i  
53:      and rate = (select rate from tmp1 where row_count=@i);  
54:      update tmp1  
55:      set bal_qty = @tot  
56:      where row_count=@i;  
57:    END WHILE;  
58:    */  
59:    CALL myProc1();  
60:    select rdate,dsc,rec_qty,cons_qty,bqty bal_qty,cons_qty*rate debit,rec_qty*rate credit,bqty*rate bal_amt,rate from tmp2  
61:    order by row_count;  
62:  /*Report Select Query EStart   */  
63:  drop temporary table if exists tmp;  
64:  /*drop table if exists tmp1;  
65:  drop table if exists tmp2;*/  
66:  END $$  
67:  DELIMITER ;  

Dynamic DataTable Bind from DataTable after Filtering by any value of DataTable

DataTable Bind Method
1:  public DataTable FilterDataTable(DataTable iDt, string FilterBy) //Desired DataTable  
2:      {  
3:        DataTable ndt = new DataTable();  
4:        int v;  
5:        // Query String are generate here  
6:        string FilterQuery = "";  
7:        for (v = 0; v <= iDt.Columns.Count - 1; v++)  
8:        {  
9:          ndt.Columns.Add(iDt.Columns[v].ColumnName); // Binding Output DataTable Colums  
10:          if (FilterQuery == "")  
11:          {  
12:            FilterQuery = dt.Columns[v].ColumnName + " Like '%" + FilterBy + "%' ";  
13:          }  
14:          else  
15:          {  
16:            FilterQuery += " or " + iDt.Columns[v].ColumnName + " like '%" + FilterBy + "%' ";  
17:          }  
18:        }  
19:        DataRow[] dtr;  
20:        dtr = iDt.Select(FilterQuery); // Query Run  
21:        foreach (DataRow row in dtr)  
22:        {  
23:          DataRow drt = ndt.NewRow();  
24:          for (v = 0; v <= iDt.Columns.Count - 1; v++)  
25:          {  
26:            drt[v] = row[v];  
27:          }  
28:          ndt.Rows.Add(drt); // Binding Output Rows  
29:        }  
30:        return ndt; // Return DataTable after Filtering  
31:      }  
1:  //Calling DataTable  
2:  dataGridView2.DataSource = FilterDataTable(InputDataTable, SearchbyValue);