如何执行sproc以获取存储过程中的第一个或第二个select语句?

时间:2011-04-13 18:33:42

标签: sql sql-server-2000

我的sproc返回了两个查询。我希望能够为一件事选择其中一件,并在另一件询问中选择另一件。

sp_mysproc有两个select语句:

select * from Orders where customerid = @customerid
select * from Customer where customerid = @customerid

如何执行sp_mysproc以获取这两个查询中的任何一个?我需要添加到结尾'; 1'或'; 2'吗?

1 个答案:

答案 0 :(得分:3)

你应该像Martin建议的那样使用两个独立的存储过程。

尝试使用一个函数/存储过程执行两个不同的操作只会让生活变得更加艰难。

但如果您真的想要,请不要,请查看传递参数以告知您想要的查询,并使用if语句选择适当的查询。

但严重的是,请将其分解为两个存储过程。我已经看到很多开发人员试图这样做,它最终会让他们的生活在以后更加复杂。

以下是使用if语句选择单个查询的快速而简单的示例......

CREATE PROCEDURE [dbo].[spMySproc]
(
    @CustomerID INT,
    @Table VARCHAR(10)
)
AS
BEGIN
    IF @Table = 'Orders'
    BEGIN
        SELECT * FROM [Orders] WHERE [CustomerID]=@CustomerID
    END
    IF @Table = 'Customer'
    BEGIN
        SELECT * FROM [Customer] WHERE [CustomerID]=@CustomerID
    END
END