I am facing problem in store procedure of mysql. mainly i am facing CASE problem Those change the result.But i want choice result according call Like if i want table order according to id or name or class. So i implement CASE Expression. But not find result properly
store procedure bellow
CREATE PROCEDURE StudentTablePagination
(
IN Class NVARCHAR(50) ,
IN Name NVARCHAR(50),
IN StartRecord INT,
IN PageSize INT,
IN SortColumn NVARCHAR(20),
IN SortOrder NVARCHAR(4)
)
BEGIN
IF SortOrder = 'ASC'
Then
SELECT id from lakes where name like CONCAT('%',Name,'%') AND class like
CONCAT('%',Class,'%')
ORDER BY (
CASE SortColumn
WHEN 'name' THEN lakes.name
WHEN 'state' THEN lakes.state
ELSE id END
) Asc
LIMIT StartRecord, PageSize;
ELSEIF SortOrder = 'DESC'
Then
SELECT id from lakes where name like CONCAT('%',Name,'%') AND class like
CONCAT('%',Class,'%')
ORDER BY (
CASE SortColumn
WHEN 'name' THEN lakes.name
WHEN 'state' THEN lakes.state
ELSE id END
) DESC LIMIT StartRecord , PageSize;
END IF;
END
Call:
CALL StudentTablePagination('','', 0,10,'id','asc')
and Result:
id
10
100
1000
But Result Require:
id
1
2
3