存储过程print无法输出结果? 小梁,又是啊,帮帮忙了,现在主要是那个变量SQ_des的结果不能输出。之前好像是可以的,网站前台页面中也有数据。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ---所有涉及到表变量的都要用动态SQL。如下:--set @des_count=(select count(*) from @DesTB) --改为:declare @sql nvarchar(1000)set @sql='select @c=count(*) from '+@DesTBexec sp_executesql @sql,N'@c int output',@des_count output 楼主的语句中还有很多类似的地方。楼主对照类似一个个修改吧--动态SQL语法:1:普通SQL语句可以用Exec执行eg: Select * from tableName Exec('select * from tableName') sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N2:字段名,表名,数据库名之类作为变量时,必须用动态SQLeg: declare @fname varchar(20) set @fname = '[name]'Select @fname from sysobjects -- 错误Exec('select ' + @fname + ' from sysobjects') -- 请注意 加号前后的 单引号的边上要加空格exec sp_executesql N' select ' + @fname + ' from sysobjects' 当然将字符串改成变量的形式也可 declare @s varchar(1000) set @s = 'select ' + @fname + ' from sysobjects' Exec(@s) -- 成功 exec sp_executesql @s -- 此句会报错 declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000) set @s = 'select ' + @fname + ' from sysobjects' Exec(@s) -- 成功 exec sp_executesql @s -- 此句正确,3: 输出参数eg:declare @num, @sqlsset @sqls='select count(*) from ' + @servername + '.a.dbo.b'exec(@sqls)我如何能将exec执行的结果存入变量@num中declare @num int, @sqls nvarchar(4000)set @sqls='select @a=count(*) from '+@servername+'.a.dbo.b'exec sp_executesql @sqls,N'@a int output',@num outputselect @num print isnull(@SQ_des ,'NULL') 这个sql怎么不行 SQL server 2005 里面没有报表这个组件怎么办? 数据库学习需要什么语言做基础吗 sql语句 请教一个SQL嵌套的问题。。。。 怎样删除一个数据库中的所有对象???? 如何在3个表之间建立外部关联 关于packet size 在win7 家庭普通版下安装sql2000提示出错,恳请各位大大帮忙 跪求一问题 关于T-SQL语句中一个奇怪的问题 降序显示某一列,其他列顺序不变,请问如何实现?
---所有涉及到表变量的都要用动态SQL。如下:
--set @des_count=(select count(*) from @DesTB)
--改为:
declare @sql nvarchar(1000)
set @sql='select @c=count(*) from '+@DesTB
exec sp_executesql @sql,N'@c int output',@des_count output
eg: Select * from tableName
Exec('select * from tableName')
sp_executesql N'select * from tableName' -- 请注意字符串前一定要加N2:字段名,表名,数据库名之类作为变量时,必须用动态SQL
eg:
declare @fname varchar(20)
set @fname = '[name]'
Select @fname from sysobjects -- 错误
Exec('select ' + @fname + ' from sysobjects') -- 请注意 加号前后的 单引号的边上要加空格
exec sp_executesql N' select ' + @fname + ' from sysobjects'
当然将字符串改成变量的形式也可
declare @s varchar(1000)
set @s = 'select ' + @fname + ' from sysobjects'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句会报错 declare @s Nvarchar(1000) -- 注意此处改为nvarchar(1000)
set @s = 'select ' + @fname + ' from sysobjects'
Exec(@s) -- 成功
exec sp_executesql @s -- 此句正确,3: 输出参数
eg:
declare @num,
@sqls
set @sqls='select count(*) from ' + @servername + '.a.dbo.b'
exec(@sqls)
我如何能将exec执行的结果存入变量@num中declare @num int,
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from '+@servername+'.a.dbo.b'
exec sp_executesql @sqls,N'@a int output',@num output
select @num