У меня есть комплексный тип SalesOrderHeader со следующими свойствами: OrderNumber CustomerName CustomerNumber PODate Комментарии Номер счета
Я создал хранимую процедуру (импорт функции) для заполнения этих свойств.В моей процедуре произнесите uspGetDetails, которые я использую:
Первый оператор select для получения первых 4 свойств OrderNumber, CustomerName, CustomerNumber, PODate.
Второй выбор Proprty для получения комментариев
3rd SelectСвойство для извлечения InvoiceNumber, как показано ниже
CREATE PROCEDURE uspGetHeaderDetails
-- Add the parameters for the stored procedure here
@OrderNumber CHAR(21)
AS
BEGIN
DECLARE @Counter INT;
DECLARE @OrignalNumber INT;
SELECT @Counter = count(*) FROM sop10100 WHERE sopnumbe = @OrderNumber
IF @Counter > 0
BEGIN
SELECT TOP 1 sopnumbe [OrderNumber]
, custname [CustomerName]
, custnmbr [CustomerNumber]
, cstponbr [CustomerPhoneNumber]
, docdate [PODate]
, orignumb [OriginalNumber]
FROM sop10100
WHERE sopnumbe = @OrderNumber
END
ELSE
BEGIN
SELECT TOP 1 sopnumbe [OrderNumber]
, custname [CustomerName]
, custnmbr [CustomerNumber]
, cstponbr [CustomerPhoneNumber]
, docdate [PODate]
, orignumb [OriginalNumber]
FROM SOP30200
WHERE sopnumbe = @OrderNumber
END
SELECT cmmttext [Comments]
FROM sop10106 WHERE sopnumbe = @OrderNumber
SELECT sopnumbe [InvoiceNumber]
FROM sop30200 WHERE orignumb = @OrderNumber
END
И ниже мой метод выполнения этой процедуры для заполнения SalesOrderHeader
[AcceptVerbs("POST")]
public ActionResult SearchResult(FormCollection collection )
{
string orderNumber = collection["searchItem"].ToString();
Models.SalesEntities db = new Models.SalesEntities();
ObjectParameter[] parameters = new ObjectParameter[1];
parameters[0] = new ObjectParameter("OrderNumber", orderNumber);
var headerResult = db.ExecuteFunction<Models.SalesOrderHeader>("uspGetHeaderDetails", parameters);
Models.SalesOrderHeader salesOrderHeader = new Models.SalesOrderHeader();
salesOrderHeader = headerResult.SingleOrDefault();
return View(salesOrderHeader);
}
ПРОБЛЕМА: Когда я выполняю это, яполучить сообщение о несовместимости данных, так как функция импорта выбирает результаты только первого запроса.результаты 2-го и 3-го запросов, т. е. комментарии и InvoiceNumber не выбираются.
Можно ли заполнить один сложный тип несколькими запросами в хранимой процедуре?Если нет, то как еще можно это сделать?