【问题标题】:How to take input from SQL stored procedure to a return statement如何从 SQL 存储过程中获取输入到返回语句
【发布时间】:2014-11-14 19:16:50
【问题描述】:
alter procedure [dbo].[XXX] 
(
    @vendorworksationID uniqueidentifier  ,
    @sdate date,
    @edate date,
    @total int out 
)
begin 
   select @total = COUNT(*)    
   from AdvertisedCampaignHistory a  
   where 
       CAST(a.CreationDate AS DATE) BETWEEN CAST(@sdate as DATE) AND CAST(@edate as DATE)   
       and a.CampaignID in (select cc.BCampaignID 
                            from BeaconCampaign cc, VendorWorkStation vw 
                            where cc.VendorWorkStationID = vw.VendorWorkStationID 
                              and VendorID = @vendorworksationID) 
   return @total 
end 

上面的代码显示了从 SQL Server 返回整数值的存储过程

ObjectParameter Output = new ObjectParameter("total", typeof(Int32));
var resBC = this.Context.getTotalSentBeaconCampaign(VendorWorkstationID, sdate,edate,Output).FirstOrDefault();

上面的代码显示了我如何在 C# 端传递参数和检索值

运行代码时出现以下错误

存储数据提供者返回的数据读取器没有 为所请求的查询提供了足够的列。

此错误的可能原因是什么?

【问题讨论】:

    标签: c# sql linq edmx


    【解决方案1】:

    实体框架不支持开箱即用的存储过程返回标量值。要使其与实体框架一起使用,您需要使用“选择”而不是“返回”来返回值。

    更多参考:http://www.devtoolshed.com/using-stored-procedures-entity-framework-scalar-return-values

    【讨论】:

    • 我没有得到错误 bt 我总是得到 0 作为返回值
    猜你喜欢
    • 1970-01-01
    • 2018-05-17
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    • 1970-01-01
    相关资源
    最近更新 更多