存储过程中执行@sql 变量语句时,需要返回值需要用到sq_executesql

exec sp_executesql @sqlstr,N'@output int output',@output output

而且需要执行的@sql变量必须是nvarchar数据类型

 

if exists (select * from sysobjects where name = 'pro_stu')
drop proc pro_stu
go
create proc pro_stu(
 @tablename char(10),
 @stuname char(8),
 @output int output
)as
declare @sqlstr nvarchar(2000)       --必须是nvarchar数据类型

set @sqlstr= 'select @output = count(*) from '+ @tablename +' where stuname = '''+ @stuname +''''
exec sp_executesql @sqlstr,N'@output int output',@output output


declare @statement nchar(10)
exec pro_stu 'stu','张三', @statement output
select @statement as '查询结果'