Q1:什么是动态SQL呢?
A1:首先是SQL语句,是根据条件来拼接SQL
Q2:为什么要用动态SQL?
A2:因为在条件WHERE中出现OR会导致不能使用索引,从而使效率差别巨大。
例如:如图1、2,
图(1)
图(2)
Q3:怎么样使用动态SQL?
A3:
存储过程Proc_Test是没有采用拼接的:CREATE PROC Proc_Test
(
@姓名 varchar(10),
@课程 varchar(10),
@分数 int,
@总数 int output
)
AS
BEGIN
--取总数
SELECT @总数=COUNT(1)
FROM test
WHERE (@姓名='' or 姓名=@姓名)
AND (