Выполняя ту же самую команду sql, я получаю ошибку в зависимости от того, какой порядок параметров определен в хранимой процедуре. Эта ошибка была первоначально обнаружена с использованием сохраненной структуры, обработанной через сущность, но это, по-видимому, не является причиной проблемы.хранимая процедура с запутанными именованными параметрами «Ошибка преобразования типа данных nvarchar в int».
Сообщение об ошибке «Ошибка преобразования типа данных nvarchar в int». похоже, что sproc пытается замять параметр @CagIdList в один из нулевых параметров int. Мысли?
Sql Команда:
exec sp_executesql
N'rptAll.usp_SprocParameterTest @StartDate, @EndDate, @CAGIdList',
N'@StartDate datetime,@EndDate datetime,@CAGIdList nvarchar(1317)',
@StartDate='2014-11-16 00:00:00',@EndDate='2014-12-16 00:00:00',@CAGIdList=N'857,858,859'
выше команда будет безуспешной с хранимой процедурой:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [rptAll].[usp_SprocParameterTest]
(
@StartDate datetime,
@EndDate datetime,
@StartRow int = null, -- please note where this parameter started
@MaxRows int = null, -- me too
@Sort varchar(255)= null,
@mfgCode varchar(255) = null,
@CAGIdList varchar(max) = null
)
as
select 1
То же самое будет успешным для этого хранимой процедуры:
--Move the nullable int params to the end of the list
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [rptAll].[usp_SprocParameterTest]
(
@StartDate datetime,
@EndDate datetime,
@Sort varchar(255)= null,
@mfgCode varchar(255) = null,
@CAGIdList varchar(5000) = null,
@StartRow int = null, --look at mee
@MaxRows int = null --hey me too
)
as
select 1
Спасибо. Я не понял, что мой оригинальный синтаксис был функциональным эквивалентом объявления локальных переменных, а затем передал их по порядку в сохраненный процесс. – Derpy