SELECT query with a variable for the table name so that condition determines which table the result set is based on. : Dynamic SQL « Transact SQL « SQL Server / T-SQL Tutorial






4>
5> CREATE TABLE sales(
6>    stor_id        char(4)           NOT NULL,
7>    ord_num        varchar(20)       NOT NULL,
8>    ord_date       datetime          NOT NULL,
9>    qty            smallint          NOT NULL,
10>    payterms       varchar(12)       NOT NULL,
11>    title_id       varchar(80)
12> )
13> 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>     DECLARE @chvTable VARCHAR(30),
3>             @chvSQL VARCHAR(255)
4>     IF getdate() > '7/1/1997'
5>     SELECT @chvTable = 'sales'
6>     ELSE
7>     SELECT @chvTable = 'authors'
8>     SELECT @chvSQL = 'SELECT * FROM ' + @chvTable
9>     EXEC (@chvSQL)
10>     GO
stor_id ord_num              ord_date                qty    payterms     title_id
------- -------------------- ----------------------- ------ ------------ --------------------------------------------------------------------------------
1       QA7442.3             1994-09-13 00:00:00.000     75 ON Billing   1
2       D4482                1994-09-14 00:00:00.000     10 Net 60       1
3       N914008              1994-09-14 00:00:00.000     20 Net 30       2
4       N914014              1994-09-14 00:00:00.000     25 Net 30       3
5       423LL922             1994-09-14 00:00:00.000     15 ON Billing   3
6       423LL930             1994-09-14 00:00:00.000     10 ON Billing   2

(6 rows affected)
1>
2> drop table sales;
3> GO








20.18.Dynamic SQL
20.18.1.A stored procedure with dynamic execution.
20.18.2.Simple SELECT query that uses a variable for the field to sequence the result set.
20.18.3.SELECT query with a variable for the table name so that condition determines which table the result set is based on.
20.18.4.Using Stored Procedure to create dynamic sql statement
20.18.5.Change database dynamically
20.18.6.Pass parameters into dynamic sql statement
20.18.7.Build a dynamic sql statement from schema name, table name and column name
20.18.8.create a dynamic sql statement and save it in a varchar type variable