1
我有一個控制檯應用程序,我通過Mono在Mac OS X上運行。雖然它在Windows操作系統上正確執行,但它只返回nvarchar(max)變量的第一個字符。下面是C#代碼:MonoMac控制檯應用程序只返回nvarchar的第一個字符(最大)
SqlConnection myConnection = new SqlConnection(Variables.connectionString());
SqlCommand myCommand = new SqlCommand("IndexPageDetailsGet", myConnection);
myCommand.CommandType = CommandType.StoredProcedure;
SqlParameter parameterIndexPageID = new SqlParameter("@IndexPageID", SqlDbType.Int);
parameterIndexPageID.Value = indexPageID;
myCommand.Parameters.Add(parameterIndexPageID);
SqlParameter parameterIndexPageText = new SqlParameter("@IndexPageText", SqlDbType.NVarChar, -1);
parameterIndexPageText.Direction = ParameterDirection.Output;
myCommand.Parameters.Add(parameterIndexPageText);
myConnection.Open();
myCommand.ExecuteNonQuery();
myConnection.Close();
return (string)parameterIndexPageText.Value; // Only returns the first character
這裏是存儲過程:
ALTER PROCEDURE [dbo].[IndexPageDetailsGet]
(
@IndexPageID int,
@IndexPageText nvarchar(max) OUTPUT
)
AS SELECT
@IndexPageText = IndexPageText
FROM
IndexPages
WHERE
IndexPageID = @IndexPageID
有其他人共同見證了這一行爲和/或不知道如何解決它?
編輯:這是我的單聲道版本信息:
MonoDevelop的3.0.3.2
運行:
單2.10.9(壓縮檔)
GTK 10年2月24日
GTK#(2.12.0.0)
包裝版本:210090011
代碼似乎罰款 - 只是胡亂猜測 - 你試過參數的最大大小設置爲'Int.MaxValue'(而不是的-1)?像'新的SqlParameter(「@ IndexPageText」,SqlDbType.NVarChar,Int.MaxValue);' – 2012-07-07 09:31:55
謝謝。我嘗試了你的建議,但得到一個異常: 未處理的異常:System.Data.SqlClient.SqlException:傳入的表格數據流(TDS)遠程過程調用(RPC)協議流不正確。參數6(「@IndexPageText」):數據類型0xE7的數據長度或元數據長度無效。 – 2012-07-07 10:14:27