----------------------------------------
如题,
好象存贮过程是没有大小限制的,如果一个程序写得很多,有可能远远超过4000个字符呀,
此时如何处理呢?
nvarchar型字段只能容纳4000个字符呀?
syscomments表中存放的就有存贮过程,字段名称为text,类型是nvarchar(4000)型。
另外,还有一个 ctext,varbinary型,我不知这个字段是做什么用的?
10 个解决方案
#1
截断,不存储了.
也有可能直接报错,不让你保存.
也有可能直接报错,不让你保存.
#2
不是很清楚楼主的最终意思,我的理解是动态构造SQL,当nvarchar型字符拼串超过4000时,会被截断.遇到这种情况可以考用多变量拼接,再EXEC(@!+@2+@3...)
#3
楼主的意思是在系统表syscomments中的text字段是nvarchar(4000)
这个字段会截断的
可以试试这个
这个字段会截断的
可以试试这个
sp_helptext '存储过程名'
#4
看帮助中对syscomments的解释
#5
大家没明白我的意思,我是问:
我们写的存贮过程,都会存贮过
ssycommnets中的text字段中,但是当我们的程序很大时,text字段容不下时,
系统如何保存的,系统一定保存住了,但是我不知如何实现保存大的程序的,假如程序代码超过1万行。
我们写的存贮过程,都会存贮过
ssycommnets中的text字段中,但是当我们的程序很大时,text字段容不下时,
系统如何保存的,系统一定保存住了,但是我不知如何实现保存大的程序的,假如程序代码超过1万行。
#6
看3楼,不过应该有更好的方法
#7
哦,原来text列是一列装不完,留到下一列
#8
我是问如何存贮的,
sp_helptext的作用是查看,这个我知道,但是我不知系统是如何将超过4000个字符的存贮过程存到nvarchar(4000)的字段中的?
#9
什么意思,谢谢。
#10
看7楼,一个text行装不完是会产生第二行,知道保存完整为止
select text from syscomments where id=object_id('p_changeHallNameForAvgScore')
--结果
/*
(2 行受影响)
*/
#1
截断,不存储了.
也有可能直接报错,不让你保存.
也有可能直接报错,不让你保存.
#2
不是很清楚楼主的最终意思,我的理解是动态构造SQL,当nvarchar型字符拼串超过4000时,会被截断.遇到这种情况可以考用多变量拼接,再EXEC(@!+@2+@3...)
#3
楼主的意思是在系统表syscomments中的text字段是nvarchar(4000)
这个字段会截断的
可以试试这个
这个字段会截断的
可以试试这个
sp_helptext '存储过程名'
#4
看帮助中对syscomments的解释
#5
大家没明白我的意思,我是问:
我们写的存贮过程,都会存贮过
ssycommnets中的text字段中,但是当我们的程序很大时,text字段容不下时,
系统如何保存的,系统一定保存住了,但是我不知如何实现保存大的程序的,假如程序代码超过1万行。
我们写的存贮过程,都会存贮过
ssycommnets中的text字段中,但是当我们的程序很大时,text字段容不下时,
系统如何保存的,系统一定保存住了,但是我不知如何实现保存大的程序的,假如程序代码超过1万行。
#6
看3楼,不过应该有更好的方法
#7
哦,原来text列是一列装不完,留到下一列
#8
我是问如何存贮的,
sp_helptext的作用是查看,这个我知道,但是我不知系统是如何将超过4000个字符的存贮过程存到nvarchar(4000)的字段中的?
#9
什么意思,谢谢。
#10
看7楼,一个text行装不完是会产生第二行,知道保存完整为止
select text from syscomments where id=object_id('p_changeHallNameForAvgScore')
--结果
/*
(2 行受影响)
*/