我有这个存储过程:
exec T2IntranetViaggi2SelezioneConMagazzinoCompetenza @Societa = 20, @Cliente = 55, @TipologiaData = 'P', @TipoData = 'S', @DataInizio = '2013-10-28 00:00:00', @DataFine = '2013-10-28 23:59:59', @DestinatarioCodice = null, @OrdineRiferimento = '', @RiferimentoInterno = '', @PassaggioTp = 'T', @UnitaMisura = '', @Esitato = 'T', @Consegnato = 'T', @CaricoLocalita = '', @CaricoCap = '', @CaricoProvincia = '', @CaricoNazione = '', @ScaricoLocalita = '', @ScaricoCap = '', @ScaricoProvincia = '', @ScaricoNazione = '', @MagazzinoCompetenza = '', @DocumentoNumero = ''
但我想通过“Documento”字段订购结果。
我无法编辑存储过程。
答案 0 :(得分:3)
将sp的结果存储在table variable中,然后查询该表变量。
示例:
create proc p
as
select code, name from customer
go
declare @t table
(
code int,
name varchar(30)
);
insert into @t
exec p;
select * from @t order by name desc;
答案 1 :(得分:1)
假设存储过程本身不使用INSERT
...EXEC
,那么您可以这样做:
CREATE TABLE #T (
/* Columns as per the stored procedure's result set */
)
INSERT INTO #T (/* Column list */)
EXEC T2IntranetViaggi2SelezioneConMagazzinoCompetenza @Societa = 20, @Cliente = 55, ...
SELECT * FROM #T ORDER BY Documento
您还说您无法编辑存储过程 - 如果这是因为此过程还有其他调用者,那么您可能会考虑的一件事是将存储过程复制为用户定义函数(UDF),然后更改存储过程只是调用UDF。
然后,您可以在SELECT
查询中自行直接查询UDF并直接应用所需的排序。
当然,如果“无法改变”是出于其他原因,那么这可能不适用。