передача огромного строкового параметра в хранимую процедуру - PullRequest
1 голос
/ 18 ноября 2010

У меня есть хранимая процедура, которая принимает 2 параметра: идентификатор и дату.
когда я передаю большой текст в параметр идентификатора, учитывается только часть текста.как будто текст обрезан в определенном месте.я понял это, потому что когда я выполняю хранимую процедуру следующим образом:

 exec proc '1,2,3,4', '20100101'

все работает, но когда я использую большую строку вместо 1-го аргумента, обрезается только часть строки.

Ответы [ 4 ]

0 голосов
/ 18 ноября 2010

Скорее всего, первый параметр вашей хранимой процедуры имеет ограниченный размер. В Management Studio найдите процедуру, щелкните правой кнопкой мыши, выберите Изменить или Сценарий-> Изменить на .. Найдите объявление первого параметра и измените его на varchar(max) или * 1006. *.

0 голосов
/ 18 ноября 2010

возможно, вам следует изменить тип данных этой строки, попробуйте вместо этого использовать varchar(Max).

0 голосов
/ 18 ноября 2010
CREATE PROCEDURE dbo.TestXMLIN 
( 
@XMLDOC AS TEXT 
) 
AS 
DECLARE @xmlHandle INT 

EXEC sp_xml_preparedocument @xmlHandle OUTPUT, @xmlDoc 

SELECT * 
FROM OPENXML (@xmlHandle, '/P/C', 2) WITH 
( 
MajorCode VARCHAR(10) './MJ', 
MinorCode VARCHAR(10) './MI' 
) 
)OXML 
EXEC sp_xml_removedocument @xmlHandle 
0 голосов
/ 18 ноября 2010

См. Определение хранимой процедуры - она ​​определила ожидаемые параметры (щелкните правой кнопкой мыши в SqlServer Management studio - нажмите «Изменить»)

Посмотрите, сколько определено для первого аргумента и измените в соответствии с вашимнеобходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...