2010-05-05 52 views
0

新手問題:我有十個參數(八個輸入,兩路輸出),但SQL SP,當我試圖通過LINQ的代碼來調用它,我收到以下錯誤信息:錯誤調用通過LINQ SQL SP時

「DataClassesDataContext.ST_CR_CREATE_CASE_BASIS(字符串,字符串,字符串,字符串,System.DateTime?,字符串,字符串,字符串,ref int ?, ref int?)'的最佳重載方法匹配」有一些無效參數「。

帶參數?似乎無法識別,但我很困惑:數據類型匹配SQL類型,參數數量匹配,其他參數不表現出相同的行爲。誰能告訴我發生了什麼事?提前致謝。

- SQL SP:

create procedure ST_CR_CREATE_CASE_BASIS 

@p_Pers_No  nvarchar (50), 
@p_Subject  nvarchar (255), 

@p_RQ_XML  nvarchar(max), 
@p_RQ_XSL  nvarchar(max), 
@p_Date_Submit  smalldatetime, 
@p_User_ID_Submit nvarchar (255), 
@p_RQ_Status  nvarchar (50), 
@p_User_ID_OnBehalf  nvarchar (255), 

@p_Case_Number  int output, 
@p_RQ_ID  int output 

as 
begin 

-- ... etc.; the SP works fine when called from SSMS 

從aspx頁面代碼隱藏PROC看起來是這樣的:

protected void cmdSubmit_Click(object sender, EventArgs e) 
{ 

    using (DataClassesDataContext vDataCont = new DataClassesDataContext()) 
    { 
     Int32 vNewCaseNr; 
     Int32 vNewReqNr; 
     DateTime vNow = System.DateTime.Now; 

     vDataCont.ST_CR_CREATE_CASE_BASIS("101", "Test Subject Late Wed", null, null, vNow , "101", "1", "101", ref vNewCaseNr, vNewReqNr); 
    } 

} 
+0

我看到異常消息則指定了最後兩個參數應是參考,但該調用只使用ref關鍵字一次。故意還是錯字? – mwilson 2010-05-05 21:48:18

+0

錯字!謝謝你,很好的發現,但這不是問題。 – PaulC 2010-05-05 22:01:12

回答

0
using (DataClassesDataContext vDataCont = new DataClassesDataContext()) 
    { 
     int? vNewCaseNr; 
     int? vNewReqNr; 
     DateTime vNow = System.DateTime.Now; 

     vDataCont.ST_CR_CREATE_CASE_BASIS("101", "Test Subject Late Wed", null, null, vNow , "101", "1", "101", ref vNewCaseNr, ref vNewReqNr); 
    } 
+0

太棒了!這並不完美,但它足以解決問題。 實際的修正是按照上面的Raj代碼,但初始化變量: int? vNewCaseNr = 1; int? vNewReqNr = 1; ...然後它工作正常。非常感謝大家。 – PaulC 2010-05-05 22:43:37

+0

是的,當然,裁判必須初始化。輸入速度太快。 :-( – 2010-05-06 00:18:08