create function strName(@bTable varchar(50),@bCol varchar(50))
returns varchar(8000)
as
begin
declare @bName varchar(8000)
set @bName=''
select @bName=@bName+','+rtrim(@bCol) from @bTable
return(substring(@bName,2,8000))
end在这个函数中,@bTable是表名,@bCol是指定的列名,用来将指定的列的名称联结到一起,再输出出来,提示这个错误:必须声明变量 '@bTable',请问高手怎么解决啊?
returns varchar(8000)
as
begin
declare @bName varchar(8000)
set @bName=''
select @bName=@bName+','+rtrim(@bCol) from @bTable
return(substring(@bName,2,8000))
end在这个函数中,@bTable是表名,@bCol是指定的列名,用来将指定的列的名称联结到一起,再输出出来,提示这个错误:必须声明变量 '@bTable',请问高手怎么解决啊?
returns varchar(8000)
as
begin
declare @bName varchar(8000)
set @bName=''
select @bName=@bName+','+rtrim(@bCol) from @bTable
return(substring(@bName,2,8000))
end这个函数是错的,如果这样写的话。将@bTable赋值'syscolumn'
执行select @bName=@bName+','+rtrim(@bCol) from @bTable
相当于执行select @bName=@bName+','+rtrim(@bCol) from 'syscolumn'
所以应该用存储过程实现,里面调用动态sql语句。
如
create procedure pro_strName
@bTable varchar(50),
@bCol varchar(50)
as
declare @bName varchar(8000)
declare @s varchar(8000)
set @bName=''
set @s='select * from '+@bTable
exec(@s)