Добрый день.
Есть хранимая процедура:
ALTER PROCEDURE [dbo].[SoftDocumentHead]
@DocNumber int ,
@DocDate datetime,
@PosCount int
AS
BEGIN
INSERT INTO Documents (DocNumber, DocDate, PosCount
)VALUES (@DocNumber, @DocDate, @PosCount);
-- Возвращаем IDDocuments вставленной записи
RETURN SCOPE_IDENTITY();
END
Код C# подготовки параметров:
SqlParameter[] paramArray = new SqlParameter[3];
// Входной параметр 1
SqlParameter param = new SqlParameter();
param.ParameterName = "@DocNumber";
param.SqlDbType = SqlDbType.Int;
param.Value = checkHead.DocNumber;
param.Direction = ParameterDirection.Input;
paramArray[0] = param;
// Входной параметр 2
SqlParameter param2 = new SqlParameter();
param2.ParameterName = "@DocDate";
param2.SqlDbType = SqlDbType.DateTime;
param2.Value = DateTime.Now.Date;//checkHead.DocDate;
param2.Direction = ParameterDirection.Input;
paramArray[1] = param2;
// Входной параметр 3
SqlParameter param3 = new SqlParameter();
param3.ParameterName = "@PosCount";
param3.SqlDbType = SqlDbType.Int;
param3.Value = checkHead.PosCount;
param3.Direction = ParameterDirection.Input;
paramArray[2] = param3;
// Получаем уникальный ИД только что вставленной записи для привязки к шапке строк
int idDocuments = SqlProcedureCall("SoftDocumentHead", paramArray);
Далее исполнение хранимой:
/// <summary>
/// Вызов хранимой с параметрами и возвратом параметра int
/// </summary>
protected int SqlProcedureCall(string procName, SqlParameter[] paramArray)
{
//Установка имени хранимой процедуры
SqlCommand cmd = new SqlCommand(procName, cn);
cmd.CommandType = CommandType.StoredProcedure;
foreach (SqlParameter param in paramArray)
cmd.Parameters.Add(param);
return int.Parse(cmd.ExecuteScalar().ToString());
}
Профайлером отлавливаю:
автор |
exec SoftDocumentHead @DocNumber=45,@DocDate=''2010-01-24 00:00:00:000'',@PosCount=1 |
Почему оно в дате подставляет 2 раза одинарные кавычки?
Благодарю.