存储过程中执行@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 '查询结果'