asp.netのLINQからSQLサーバーでプロを実行しようとしています。SQL で Proc を実行すると正常に動作しますが、asp.net で linq から呼び出そうとすると、「System.Void' はマップされたストアド プロシージャ メソッドの有効な戻り値の型ではありません」というエラーがスローされます。プロセス、
ALTER PROCEDURE [dbo].[VIEW_COLUMN]
@REPORT_NO INT ,
@TEMPLATE_NAME VARCHAR(100),
@BODY_TEXT VARCHAR(500),
@BODY_TEXT_O VARCHAR(500) OUTPUT
AS
BEGIN
--DECLARE VARIABLES--
DECLARE @BODY_TEXT VARCHAR(100)
----------- etc----
------etc etc-----
SET @BODY_TEXT_O = @BODY_TEXT
END
私のASP.netページでは、
using (EHSIMSDataContext db = new EHSIMSDataContext(EHSIMSConnectionString.GetConnectionString()))
{
string MainString = _EmailTemp.TEMPLATE_TEXT;
int? R = 000001;
string b = "";
string temname = _EmailTemp.VIEW_NAME;
db.VIEW_COLUMN(R, temname, MainString, ref b);
}
エラーの後、私はグーグルでデザイナーページを次のように変更しました(voidを削除し、文字列を追加し、最後の戻り行を追加しました)
public string VIEW_COLUMN ------etc
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), rEPORT_NO, tEMPLATE_NAME, bODY_TEXT, bODY_TEXT_O);
bODY_TEXT_O = ((string)(result.GetParameterValue(3)));
return ((string)(result.ReturnValue));
}
そして、上記のコードと「Public Void VIEW_COLUMN」のメソッドには戻り値がありません。これはまだいくつかの異なるエラーを示しており、プロシージャ プロパティの DBML ファイルで文字列を戻り値の型として設定しようとしましたが、まだ使用されていません。何が欠けているのかわからない。
追加情報 手順に一時テーブルとテーブル変数がありますが、それが原因でしょうか?
いくつかの返信は本当に役に立ちます...ありがとう