create function getData(@tableName varchar(20))
returns table
as
return
(
begin
declare @sql varchar(100)
set @sql='select * from '+@sql
exec sp_executesql @sql
end
)
服务器: 消息 156,级别 15,状态 1,过程 getData,行 6
在关键字 'declare' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,过程 getData,行 9
第 9 行: ')' 附近有语法错误。
returns table
as
return
(
begin
declare @sql varchar(100)
set @sql='select * from '+@sql
exec sp_executesql @sql
end
)
服务器: 消息 156,级别 15,状态 1,过程 getData,行 6
在关键字 'declare' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,过程 getData,行 9
第 9 行: ')' 附近有语法错误。
create function getData
(@tableName varchar(20))
returns varchar(8000)
as
begin
declare @sql varchar(100)
set @sql='select * from '+@sql
exec sp_executesql @sql
end
go
as
begin
declare @sql varchar(100)
set @sql='select * from '+@sql
exec(@sql)
end
三楼用了exec动态语句
函数中是不能用ddl语句,动态语句,存储过程及非确定性函数的
先将你的函数改的符合语法再说
create function getData
(@tableName varchar(20))
returns varchar(8000)
as
begin
declare @sql varchar(100)
set @sql='select * from '+@sql
exec sp_executesql @sql
return @sql
end
go
这里参数@tableName,却没有用到。另外@sql,这个参数且不是永远没有值了??
还有你既然写了returns varchar(8000)。就必须有返回,你这里就算返回@sql。你觉得有意义么?你这完全是一个存储过程来做的事么。。干吗整个函数在这里?