2010-04-17 57 views
1

在另一篇文章中,我得到了一个关于重复SQL的回复。你能解释什么是重复性SQL?重复性SQL:这是什么意思?

SQL Code Smells

我想使它成为一个新的职位,因为它是一个不同的主题。 回复说使用VIEW可以避免使用“执行完全相同连接但不同过滤器的多个存储过程”。

如果我们使用Stored Proecure,请给出一个只能使用重复查询才能实现的例子吗?

感谢

Lijo

回答

0

我认为在这种情况下意味着OP就是当你的存储过程返回[同样可以在不重复使用时视图来实现]可以说,用户信息

喜欢的东西

CREATE PROCEDURE UserByID (
     @UserID INT 
) 
AS 
BEGIN 
    SELECT * 
    FROM Users u INNER JOIN 
      UserGroups ug ON u.UserID = ug.UserID 
    WHERE u.UserID = @UserID 
END 

CREATE PROCEDURE UserByName (
     @UserName VARCHAR(50) 
) 
AS 
BEGIN 
    SELECT * 
    FROM Users u INNER JOIN 
      UserGroups ug ON u.UserID = ug.UserID 
    WHERE u.UserID = @UserName 
END 

您可以取得,而创建一个视图

CREATE VIEW UserInformation 
AS 
SELECT * 
FROM Users u INNER JOIN 
     UserGroups ug ON u.UserID = ug.UserID 

并使用

SELECT * 
FROM UserInformation 
WHERE UserID = @UserID 

SELECT * 
FROM UserInformation 
WHERE Name = @UserName