0

我有这个存储过程:

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”字段排序结果。

我无法编辑存储过程。

4

2 回答 2

4

将您的 sp 的结果存储在表变量中,然后查询该表变量。

例子:

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;
于 2013-10-29T07:59:07.037 回答
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。

然后,您可以自己在查询中直接查询 UDFSELECT并直接应用所需的排序。

当然,如果“不能改变”是出于其他原因,那么这可能不适用。

于 2013-10-29T07:56:00.943 回答