将巨大的字符串参数传递给存储过程

时间:2010-11-18 10:42:25

标签: sql stored-procedures

我有一个存储过程,它带有2个参数:ID和Date 当我将大文本传递给ID参数时,只考虑部分文本。好像文本在某个地方被剪切了一样。我认为这是因为当我按如下方式执行存储过程时:

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

everthing works找到 但是当我使用一个大字符串而不是第一个参数时,只有部分字符串被剪切。

4 个答案:

答案 0 :(得分:0)

查看存储过程的定义 - 它已经定义了预期的参数(右键单击SqlServer Management studio - 单击“修改”)

查看为第一个参数定义了多少,并根据您的需要进行更改。

答案 1 :(得分:0)

也许您应该更改此字符串的数据类型,尝试改为使用varchar(Max)

答案 2 :(得分:0)

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 

答案 3 :(得分:0)

存储过程的第一个参数很可能是有限的大小。在Management Studio中找到该过程,右键单击,选择修改脚本 - >更改为... 查找第一个参数的声明并将其更改为{{1 }或varchar(max)