用SP_executesql执行的字符串超过4000个怎么办呢? 拆成几个字符串s1、s2、s3...然后exec(s1+s2+s3+...) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 搞错了,临时表其实后面的语句也可以用,我告诉你拆的意思是把一些东西分开,比如把一段代码放到另一存储过程中去,然后在这个存储过程中调用EXEC ,因为临时表还存在,不会不能用的。 我试着诉一下,还是不行,大家请看:create PROCEDURE TESTBASexec sP_executesql N' CREATE TABLE #t(x INT PRIMARY KEY)'EXEC TESTC及:ALTER PROCEDURE TESTCAS exec sP_executesql N'INSERT INTO #t VALUES (2)'exec sP_executesql N'SELECT * FROM #t'exec sP_executesql N'Drop table #t'运行TESTB时出错. 这种拆分时,建临时表(大家都要用的语句)当然只能在调用的主程序中,如:create PROCEDURE TESTBAScreate table #aa ()EXEC TESTCselect * from #aago当然,在TESTC里出现#aa是不行的。 改用exec,不用SP_executesql。 EXEC [ UTE ] ( { @string_variable | [ N ] 'tsql_string' } [ + ...n ] )@string_variable是局部变量的名称。@string_variable 可以是 char、varchar、nchar 或 nvarchar 数据类型,最大值为服务器的可用内存。如果字符串长度超过 4,000 个字符,则把多个局部变量串联起来用于 EXECUTE 字符串。有关系统提供的 SQL Server 数据类型更多的信息,请参见数据类型。 [N]'tsql_string'是一个常量,tsql_string 可以是 nvarchar 或 varchar 数据类型。如果包含 N,则该字符串将解释为 nvarchar 数据类型,最大值为服务器的可用内存。如果字符串长度超过 4,000 个字符,则把多个局部变量串联起来用于 EXECUTE 字符串。 是的,EXECUTE 是可以用,但因我的存储过程有参数的.用这个方法执行效率低点.我本计划如果SP_executesql的问题不能解决时再用这个方法 改用临时存储过程,可以用参数。exec ('create PROCEDURE #TESTC AS INSERT INTO #t VALUES (2) SELECT * FROM #t Drop table #t')exec ('create PROCEDURE #TESTB AS CREATE TABLE #t(x INT PRIMARY KEY) EXEC #TESTC')exec #testb 百分比的问题 数据挖掘 重组或重建索引后碎片率一直不变 请问一个关于 Case 的问题 请教高手怎么写这样一条sql查询语句(在线等) 小问题? ##########怎样才能把时间查出来??各位大侠请帮忙#################### 向大家请教一个经常遇到的sql累计问题 急急急~~来看来看 使用U8执行某个功能,如何查看执行了哪些SQL语句,或者存储过程(在线等) zydeco01 经验放送:优化SQL SERVER数据库的经验总结!
EXEC ,因为临时表还存在,不会不能用的。
AS
exec sP_executesql N' CREATE TABLE #t(x INT PRIMARY KEY)'
EXEC TESTC及:
ALTER PROCEDURE TESTC
AS
exec sP_executesql N'INSERT INTO #t VALUES (2)'
exec sP_executesql N'SELECT * FROM #t'
exec sP_executesql N'Drop table #t'运行TESTB时出错.
create PROCEDURE TESTB
AS
create table #aa ()EXEC TESTC
select * from #aa
go当然,在TESTC里出现#aa是不行的。
EXEC [ UTE ] ( { @string_variable | [ N ] 'tsql_string' } [ + ...n ] )@string_variable是局部变量的名称。@string_variable 可以是 char、varchar、nchar 或 nvarchar 数据类型,最大值为服务器的可用内存。如果字符串长度超过 4,000 个字符,则把多个局部变量串联起来用于 EXECUTE 字符串。有关系统提供的 SQL Server 数据类型更多的信息,请参见数据类型。 [N]'tsql_string'是一个常量,tsql_string 可以是 nvarchar 或 varchar 数据类型。如果包含 N,则该字符串将解释为 nvarchar 数据类型,最大值为服务器的可用内存。如果字符串长度超过 4,000 个字符,则把多个局部变量串联起来用于 EXECUTE 字符串。
EXECUTE 是可以用,但因我的存储过程有参数的.用这个方法执行效率低点.
我本计划如果SP_executesql的问题不能解决时再用这个方法
exec ('create PROCEDURE #TESTC AS INSERT INTO #t VALUES (2) SELECT * FROM #t Drop table #t')
exec ('create PROCEDURE #TESTB AS CREATE TABLE #t(x INT PRIMARY KEY) EXEC #TESTC')
exec #testb