-1

除非我向该过​​程传递一个键,否则是否有其他方法可以使用存储过程获取表的所有行?

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

4

3 回答 3

4

试试这个

CREATE PROCEDURE GetData(@key int = null)
BEGIN
  SELECT * FROM Table WHERE (@Key Is NULL or id = @Key)
END
于 2013-01-18T20:58:28.347 回答
0

您还可以使用 COALESCE 运算符:

CREATE PROCEDURE dbo.uspMySprocName(@Key INT = NULL)
AS
BEGIN
    SELECT * FROM MyTable WHERE ID = COALESCE(@Key, ID);
END
于 2013-01-18T21:03:35.583 回答
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

于 2013-01-18T21:22:49.780 回答