Может кто-нибудь указать мне на запись Connect suggention для ошибки SELECT-EXEC
, чтобы я мог ее проголосовать?
Прошло 10 лет, и я до сих пор ругаю SQL Server за то, что он не разрешил синтаксис SELECT-EXEC
, например:
SELECT * FROM (
EXECUTE GetKnownTerroristList @StartDate='2010-01-01', @EndDate='2010-11-01'
)
или
CREATE PROCEDURE dbo.GetTransactionsByLCT @LCTGUID uniqueidentifier AS
SELECT * FROM Transactions
WHERE LCTGUID = @LCTGUID
UNION ALL
EXECUTE DATACENTER.Accounts.dbo.GetTransactionsByLCT @LCTGUID = @LCTGUID
или
Пример 3 - Реальная проблема
CREATE PROCEDURE dbo.GetTransactionsByLCT @LCTGUID uniqueidentifier AS
EXECUTE GetTranasctionsByLCT_90 @LCTGUID = @LCTGUID
UNION ALL
EXECUTE DATACENTER.Accounts.dbo.GetTransactionsByLCT @LCTGUID = @LCTGUID
Erland Sommarskog имеет известную страницу предложенных альтернатив ; но ни один из них не является подходящим обходным путем (то есть они не могут воспроизвести желаемую функциональность).
я знаю, что должно быть записью Microsoft Connect , посвященной этой проблеме; с тех пор тысячи людей столкнулись с этим. Но мои поиски Connect заканчиваются пусто .
Может кто-нибудь указать мне на запись Connect suggention для ошибки SELECT-EXEC
, чтобы я мог ее проголосовать?
Редактировать: Резюме обходного пути Эрланда:
- Использование параметров OUTPUT - Обычно не применяется, но иногда игнорируется.
- Табличные функции - Вероятно, лучший метод для вывода, но имеет некоторые ограничения.
- Использование таблицы - Большинство общих методов без ограничений, но немного сложнее в использовании.
- INSERT-EXEC - Не требует перезаписи. Есть некоторые ошибки.
- Параметры таблицы и типы таблиц - Возможно, это был окончательный ответ, но из-за ограничения он лишь незначительно полезен в этом контексте. (SQL 2008)
- Использование CLR - Не требует перезаписи. Неуклюжий, но полезен в крайнем случае, когда INSERT-EXEC не работает. (SQL 2005)
- OPENQUERY - Не требует перезаписи. Хитрый со многими подводными камнями.
- Использование XML - окольный способ, который требует переписывания, но имеет некоторые преимущества по сравнению с другими методами. (SQL 2005)
- Использование переменных курсора - Не рекомендуется.