【问题标题】:Database First Exception in Stored Procedure存储过程中的数据库第一个异常
【发布时间】:2014-05-20 06:33:53
【问题描述】:

我的存储过程是::

USE [DatabaseName]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[AdvancedSearch] 
    @CompanyID bigint,
    @BookingReference nvarchar(15)

AS
Begin

declare @ExecuteSQL nvarchar(2000)
declare @WhereSQL nvarchar(2000)

if rtrim(isnull(@BookingReference,''))<>''
begin
set @WhereSQL = concat(@WhereSQL,' and
exists(select top 1 null from document (nolock) where document.dossierID=DossierHeader.DossierID and bookingreference like ''%' , @BookingReference , '%'' and Document.CompanyID=',@CompanyID,')')
end

set @ExecuteSQL=concat('
select top 10 dossier.DisplayID,dossierid,CustomerID,isnull(Customer.ShortName,Customer.[CustomerName]) as Customer,DossierHeader.InvoiceNumber,
from DossierHeader
join Customer
on DossierHeader.CustomerID=Customer.ID
where 
DossierHeader.CompanyID=',@CompanyID,@WhereSQL)

EXEC SP_EXECUTESQL @ExecuteSQL

end

当我在我的代码中使用它时,然后在调试时我得到一些异常,例如::

我该如何解决这个问题?

【问题讨论】:

    标签: c# sql asp.net-mvc linq entity-framework


    【解决方案1】:

    如果您希望返回嵌套选择的结果(存储过程return 执行返回代码或输出参数),您应该将stored procedure 更改为table value function

    区别:

    Function vs. Stored Procedure in SQL Server

    以及Entity Framework对表值函数的支持:

    http://blogs.msdn.com/b/efdesign/archive/2011/01/21/table-valued-function-support.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-12
      • 1970-01-01
      相关资源
      最近更新 更多