如果参数单独声明,则执行sproc返回无结果



我为何返回结果感到困惑:

EXEC GTKT_SP_Attachments @Operation = N'GetAllPhotoIDs', @TicketID = 1

但这不是:

DECLARE @Operation AS nvarchar(29) = N'GetAllPhotoIDs',
        @TicketID AS int = 1
EXEC GTKT_SP_Attachments @Operation, @TicketID

有什么想法?

更新: exec gtkt_sp_attachments @ticketid,@operation 无法正常工作,因为操作和ticketid之间有更多参数(错误:错误将数据类型NVarchar转换为int); gtkt_sp_attachments @operation = @operation,@ticketid = @ticketid 不返回像原始呼叫

那样返回的东西
EXEC GTKT_SP_Attachments @Operation, @TicketID

与键入

是同一件事
EXEC GTKT_SP_Attachments N'GetAllPhotoIDs', 1

在您的示例中。正如Mikael在上面的评论中提到的那样,参数是按位置约束的,而不是名称。

使用

EXEC GTKT_SP_Attachments @Operation = @Operation, @TicketID = @TicketID