Как мне выполнить sproc, чтобы получить первый или второй оператор выбора в хранимой процедуре? - PullRequest
0 голосов
/ 13 апреля 2011

У меня есть два запроса, возвращаемых моим sproc. Я хочу иметь возможность выбрать один из них для одного, а другой выбрать в другом запросе.

sp_mysproc имеет два возвращаемых оператора select:

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

Как я могу выполнить sp_mysproc, чтобы получить любой из этих двух запросов? Нужно ли добавлять в конец «; 1» или «; 2»?

1 Ответ

3 голосов
/ 13 апреля 2011

Вы действительно должны использовать два отдельных сохраненных процесса, как предложил Мартин.

Попытка использовать одну функцию / хранимый процесс для выполнения двух разных задач просто усложняет жизнь.

но если вы действительно хотите, и, пожалуйста, не смотрите, передайте параметр, чтобы указать, какой запрос вам нужен, и используйте оператор 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
...