use [001];
if object_ID('dbo.fn_age') is not null drop function dbo.fn_age;
go
create function dbo.fn_age
(
@lefttable as varchar(50),
@righttable as varchar(50)
)
returns varchar(50) as
begin
declare @backname as varchar(50)
select @backname=a2.Name from @lefttable as a1 left join @righttable as a2
on a1.ID=a2.ID
return @backname
end
go
提示错误是:消息 1087,级别 16,状态 1,过程 fn_age,第 9 行
必须声明表变量 "@lefttable"。
消息 1087,级别 16,状态 1,过程 fn_age,第 9 行
必须声明表变量 "@righttable"。我是想
自定义一个函数,传入俩个表名,然后根据俩个表名查询某个字段返回
if object_ID('dbo.fn_age') is not null drop function dbo.fn_age;
go
create function dbo.fn_age
(
@lefttable as varchar(50),
@righttable as varchar(50)
)
returns varchar(50) as
begin
declare @backname as varchar(50)
select @backname=a2.Name from @lefttable as a1 left join @righttable as a2
on a1.ID=a2.ID
return @backname
end
go
提示错误是:消息 1087,级别 16,状态 1,过程 fn_age,第 9 行
必须声明表变量 "@lefttable"。
消息 1087,级别 16,状态 1,过程 fn_age,第 9 行
必须声明表变量 "@righttable"。我是想
自定义一个函数,传入俩个表名,然后根据俩个表名查询某个字段返回
@lefttable nvarchar(50),
@righttable nvarchar(50),
@backname nvarchar(50) output
)
as
begin
declare @sql nvarchar(1000)
select @sql = N'select @backname=a2.Name from ' + @lefttable + '
as a1 left join ' +@righttable + ' as a2
on a1.ID=a2.ID'
exec sp_executesql @sql,N'@backname nvarchar(50) output',@backname output
select @backname
end exec 'a','b',@c output
go
create function dbo.fn_age
(
@lefttable varchar(50),
@righttable varchar(50)
)
returns varchar(50)
as
begin
declare @backname as varchar(50)
select @backname=a2.Name from [@lefttable] as a1 left join [@righttable] as a2
on a1.ID=a2.ID
return @backname
end
go你的表名用[]就可以了