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のコレクションを返すように定義しない場合、返される値は実際にはストアドプロシージャ呼び出しからの戻り値であるように見えます。たとえば、ストアドプロシージャの実行によって影響を受けた行数(SELECT実際には行を挿入、更新、または削除しなかったため、0または-1の場合):

于 2013-02-23T08:24:41.853 に答える
1

私は問題を見つけました:私はこのようにパラメータを設定しました:

@TodayShamsiDate nvarchar

nvarchar の長さを指定する必要がありました

@TodayShamsiDate nvarchar(10)

私はそれをやったし、問題は解決しました!

于 2013-02-23T09:15:06.320 に答える