-1

我有這個程序stored procedure問題運行存儲從.NET

CREATE PROCEDURE [dbo].[GetTransactionFeeType_Pager] 
     @PageIndex INT = 1 
     ,@PageSize INT = 10 
     ,@ProgramName VARCHAR = '' 
     ,@RecordCount INT OUTPUT 
AS 
BEGIN 
     SET NOCOUNT ON; 
     SELECT ROW_NUMBER() OVER 
     (
      ORDER BY ID ASC 
    )AS RowNumber 
    ,FeeType,TransactionNumber,Amount,TransactionDate,ResponseDescription,PaidUsing 

     INTO #Results 
     FROM TransactionLog where [email protected] 

     SELECT @RecordCount = COUNT(*) 
     FROM #Results 

     SELECT * FROM #Results 
     WHERE RowNumber BETWEEN(@PageIndex -1) * @PageSize + 1 AND(((@PageIndex -1) * @PageSize + 1) + @PageSize) - 1 

     DROP TABLE #Results 
END 

基本上它返回分頁......

現在從SQL服務器上運行,並傳遞參數當上述運行良好;

1 , 10 ,  Deposit 

但是用下面的代碼:

string query = "[GetTransactionFeeType_Pager]"; 
    SqlCommand cmd = new SqlCommand(query); 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Parameters.AddWithValue("@PageIndex", pageIndex); 
    cmd.Parameters.AddWithValue("@PageSize", PageSize); 
    cmd.Parameters.AddWithValue("@ProgramName", programID.ToString()); 
    cmd.Parameters.Add("@RecordCount", SqlDbType.Int, 4).Direction =     
    ParameterDirection.Output; 

哪些是相同SQL SERVER; 1,10,存款 ,但它沒有返回結果/空結果。特蘭我相信它昨天工作正常,所以沒有線索怎麼回事...

有什麼建議嗎?

+0

的如何執行該命令的長度是多少?你如何讀取輸出參數的值?這在上面的代碼中缺少。 – Steve

+0

該部分的代碼工作正常,因爲它爲其他類似的過程,其中我不必使用programName ... – confusedMind

+0

我的主要關注是我正確處理字符串作爲ProgramName將是一個字符串,如果我使用ID它工作正常.. – confusedMind

回答

2

VARCHAR()沒有指定的長度通常默認長度爲1 - 您傳遞的值將被自動截斷。

所以

CREATE PROCEDURE [dbo].[GetTransactionFeeType_Pager] 
    @PageIndex INT = 1 
    ,@PageSize INT = 10 
    ,@ProgramName VARCHAR(99) = '' 
    ,@RecordCount INT OUTPUT 
AS 
... 

的伎倆通過定義@ProgramName

+0

現在完美的作品謝謝你。 – confusedMind