Mega Code Archive

 
Categories / MSSQL Tutorial / Transact SQL
 

Using Stored Procedure to create dynamic sql statement

4> 5> 6> CREATE TABLE sales( 7>    stor_id        char(4)           NOT NULL, 8>    ord_num        varchar(20)       NOT NULL, 9>    ord_date       datetime          NOT NULL, 10>    qty            smallint          NOT NULL, 11>    payterms       varchar(12)       NOT NULL, 12>    title_id       varchar(80) 13> ) 14> GO 1> insert sales values('1', 'QA7442.3', '09/13/94', 75, 'ON Billing','1') 2> insert sales values('2', 'D4482',    '09/14/94', 10, 'Net 60',    '1') 3> insert sales values('3', 'N914008',  '09/14/94', 20, 'Net 30',    '2') 4> insert sales values('4', 'N914014',  '09/14/94', 25, 'Net 30',    '3') 5> insert sales values('5', '423LL922', '09/14/94', 15, 'ON Billing','3') 6> insert sales values('6', '423LL930', '09/14/94', 10, 'ON Billing','2') 7> GO (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) (1 rows affected) 1> 2>     CREATE PROCEDURE SalesQtys 3>         @chvOrderBy VARCHAR(30) = 'qty', 4>         @chvSortType VARCHAR(4) = 'ASC' 5>     AS 6>     DECLARE @chvSQL VARCHAR(255) 7>     SELECT @chvSQL = 'SELECT stor_id, ord_num, title_id, qty' 8>     SELECT @chvSQL = @chvSQL + ' FROM Sales' 9>     SELECT @chvSQL = @chvSQL + ' ORDER BY ' + @chvOrderBy + ' ' + @chvSortType 10>     EXEC (@chvSQL) 11>     GO 1> 2>     SalesQtys @chvOrderBy = 'stor_id', @chvSortType = 'DESC' 3>     GO stor_id ord_num              title_id                                                                         qty ------- -------------------- -------------------------------------------------------------------------------- ------ 6       423LL930             2                                                                                    10 5       423LL922             3                                                                                    15 4       N914014              3                                                                                    25 3       N914008              2                                                                                    20 2       D4482                1                                                                                    10 1       QA7442.3             1                                                                                    75 (6 rows affected) 1>     SalesQtys 2>     GO stor_id ord_num              title_id                                                                         qty ------- -------------------- -------------------------------------------------------------------------------- ------ 2       D4482                1                                                                                    10 6       423LL930             2                                                                                    10 5       423LL922             3                                                                                    15 3       N914008              2                                                                                    20 4       N914014              3                                                                                    25 1       QA7442.3             1                                                                                    75 (6 rows affected) 1>     SalesQtys @chvOrderBy = 'title_id' 2>     GO stor_id ord_num              title_id                                                                         qty ------- -------------------- -------------------------------------------------------------------------------- ------ 1       QA7442.3             1                                                                                    75 2       D4482                1                                                                                    10 3       N914008              2                                                                                    20 6       423LL930             2                                                                                    10 4       N914014              3                                                                                    25 5       423LL922             3                                                                                    15 (6 rows affected) 1> 2> 3> drop table sales; 4> GO