除非我传递密钥,否则显示表的所有记录

时间:2013-01-18 20:49:30

标签: sql sql-server

有没有其他方法可以使用存储过程获取表的所有行,除非我将过程传递给密钥?

如果是这样,我如何在SQL Server中编写代码?

3 个答案:

答案 0 :(得分:4)

试试这个

CREATE PROCEDURE GetData(@key int = null)
BEGIN
  SELECT * FROM Table WHERE (@Key Is NULL or id = @Key)
END

答案 1 :(得分:0)

您也可以使用COALESCE运算符:

CREATE PROCEDURE dbo.uspMySprocName(@Key INT = NULL)
AS
BEGIN
    SELECT * FROM MyTable WHERE ID = COALESCE(@Key, ID);
END

答案 2 :(得分:0)

您可以使用if条件并进行2次查询

**syntax:**  
    if (@key is null ) then  
        begin  
            select * from table1 ;  
        end  
    else  
        being  
            select * from tabel1 where field1 = @key ;  
        end  
    endif

以下链接应该有帮助

http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=146620