我是SQL 2005和Enterprise Library(版本4)的新手。我想調用Stored Proc並傳遞超過8000個字符的字符串。 db中的列被定義爲varchar(max)。我以爲我會先從T-SQL調用存儲過程開始進行一些小測試,我驚訝於插入的字符串值被截斷,即使是一個簡短的字符串。在存儲過程中使用varchar(max)。爲什麼插入值被截斷?
CREATE TABLE [dbo].[ChadTest](
[TestParam] [varchar](max) NOT NULL
) ON [CMISII_DATA]
GO
ALTER PROCEDURE [dbo].[spr_ChadTest]
(
@TestParam varchar(max)
)
AS
BEGIN
INSERT INTO ChadTest
(TestParam) VALUES (@TestParam)
END
DECLARE @RC int
DECLARE @TestParam varchar
-- TODO: Set parameter values here.
SET @TestParam = '12345'
EXECUTE @RC = [CMISII].[dbo].[spr_ChadTest]
@TestParam
Select TestParam, len(TestParam) from chadtest
輸出:
1 1
一旦我得到上述工作這個簡單的例子,我需要弄清楚如何長字符串從VB.NET代碼使用企業庫傳遞給SP 。參數的數據類型是什麼?我沒有看到接受長度的AddInParameter方法的重載版本,也沒有看到「varchar(max)」枚舉作爲可用數據類型。
dbCmd = db.GetStoredProcCommand("spr_ChadTest")
db.AddInParameter(dbCmd, "TestParam", SqlDbType.VarChar, TestParam.ToString)
謝謝!
對於ADO.NET一部分,我不記得確切。在某些情況下,它使用-1來表示`max`,但我有一種感覺,你不需要在這裏給出一個長度,它只是爲自己工作。 – 2011-02-14 12:17:02