declare @strtable nvarchar(30) declare @s nvarchar(4000) declare @n int set @s=N'select @n=count(*),.. from '+@strtable+N' where ...' exec sp_executesql @s,N'@n int out',@n out select @n
declare @strtable varchar(30) declare @n int declare @sql Nvarchar(200) set @strtable='表名' set @sql=N'select @n=count(*),.. from '+@strtable+' where ... ' exe sp_executesql @sql,N'@n int output',@n output select @n
^_^我也做过这样的幻想:给一个函数传入表名或字段名之类的 但事实证明是不行的。 因为CREATE FUNCTION 中的 EXECUTE 语句只能调用扩展存储过程,其他的就做不了了。
declare @s nvarchar(4000)
declare @n int
set @s=N'select @n=count(*),.. from '+@strtable+N' where ...'
exec sp_executesql @s,N'@n int out',@n out
select @n
declare @n int
declare @sql Nvarchar(200)
set @strtable='表名'
set @sql=N'select @n=count(*),.. from '+@strtable+' where ... '
exe sp_executesql @sql,N'@n int output',@n output
select @n
但事实证明是不行的。
因为CREATE FUNCTION 中的 EXECUTE 语句只能调用扩展存储过程,其他的就做不了了。