0

我在 SQL Server 2008 中编写了以下存储过程:

ALTER Procedure [dbo].[usp_TodayNumberOfRegisteration] 
(
@TodayShamsiDate nvarchar
)
AS
Select COUNT(csci.Id) as cc1  FROM dbo.Complex_Service_Cart_Items csci INNER JOIN dbo.Complex_Service_Cart csc
ON csci.Id_Complex_Service_Cart=csc.Id
WHERE (csci.Id_Complex_Service='2cca1a67-34f4-4837-bebe-f3ba4c72b98d' or csci.Id_Complex_Service='8430cad2-dbb1-4425-bb8b-a7e158f688c4') 
and csc.TFIsPaymentComplete=1 
and csc.TFDateBackFromBankp= RTRIM( @TodayShamsiDate)

我通过 EF4 从 C# 代码隐藏中调用它:

string shamsiDate = Date.getShamsiDate();
returnValue = Convert.ToString(db.getTodayNumberOfRegisteration(shamsiDate).First().Value);

getTodayNumberOfRegisteration我添加到edmx模型中的函数在哪里。

现在这是问题:当我在 SQL Server 中执行存储过程时,而不是

 and csc.TFDateBackFromBankp= RTRIM( @TodayShamsiDate)

我设置了类似的东西:

 and csc.TFDateBackFromBankp= RTRIM( '1391/12/05')

此存储过程返回值 6

但是当我从 C# 代码隐藏传递参数时,我得到返回值'0'

任何帮助,将不胜感激。

4

2 回答 2

1

我通常这样做:在Add Function Import对话框中,选择您的存储过程并定义它返回一个标量集合: Int32

在此处输入图像描述

然后在您的代码中,像这样调用它:

int value = db.getTodayNumberOfRegisteration(shamsiDate).First().Value;

这通常对我来说很好。

如果您没有将其定义为返回一个集合: Int32,那么您返回的值似乎实际上是存储过程调用的返回值,例如受存储过程执行影响的行数( 0 或 -1 表示 a SELECT,因为您实际上并未插入、更新或删除任何行):

于 2013-02-23T08:24:41.853 回答
1

我发现了问题:我以这种方式设置了参数:

@TodayShamsiDate nvarchar

我应该指定 nvarchar 的长度

@TodayShamsiDate nvarchar(10)

我做到了,问题解决了!

于 2013-02-23T09:15:06.320 回答