Я новичок как в SQL 2005, так и в Enterprise Library (версия 4.) Я хотел бы вызвать хранимый процесс и передать строку, которая превышает 8000 символов.Столбец в БД определяется как varchar (max).Я решил начать с небольшого теста с вызова хранимой процедуры из T-SQL, и был удивлен, что значение вставленной строки было усечено даже для короткой строки.
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
Как только я приведу этот простой пример в действие, мне нужно будет выяснить, как передать длинную строку в SP из кода VB.NET с помощью библиотеки Enterprise.Каким будет тип данных параметра?Я не вижу перегруженной версии метода AddInParameter, который принимает длину, и при этом я не вижу перечисление "varchar (max)" в качестве доступного типа данных.
dbCmd = db.GetStoredProcCommand("spr_ChadTest")
db.AddInParameter(dbCmd, "TestParam", SqlDbType.VarChar, TestParam.ToString)
Спасибо!