你把function改成下面的试试,;)create function delTable(@n varchar(20))
returns int
as
begin
declare @v int
declare @sql varchar(30)
set @sql='drop table' + @n
exec sp_executesql @sql
if @@error <> 0
set @v = 0
else
set @v = 1
return @v
end
go
returns int
as
begin
declare @v int
declare @sql varchar(30)
set @sql='drop table' + @n
exec sp_executesql @sql
if @@error <> 0
set @v = 0
else
set @v = 1
return @v
end
go
if exists(select name from sysobjects where name='delTable' and xtype='FN')
drop function delTable
gocreate function delTable(@n varchar(20))
return int
as
begin
declare @v int
exec('drop table '+@n)
if @@error <> 0
@v = 0
else
@v = 1
return @v
end
go
Server: Msg 156, Level 15, State 1, Procedure delTable, Line 3
Incorrect syntax near the keyword 'return'.
Server: Msg 170, Level 15, State 1, Procedure delTable, Line 9
Line 9: Incorrect syntax near '@v'.
Server: Msg 178, Level 15, State 1, Procedure delTable, Line 13
A RETURN statement with a return value cannot be used in this context.
函数,试了吗??
create table twoTable(id varchar(5))
create table threeTable(id char(5))if exists(select name from sysobjects where name='delTable' and xtype='FN')
drop function delTable
gocreate function delTable(@n varchar(20))
returns int
as
begin
declare @v int
exec('drop table '+@n)
if @@error <> 0
set @v = 0
else
set @v = 1
return @v
end
goselect name into #tmp from sysobjects where xtype='u' and name like '%le'
select dbo.delTable(name) from #tmp
if exists(select name from sysobjects where name='oneTable' and xtype='U')
drop table oneTable
if exists(select name from sysobjects where name='twoTable' and xtype='U')
drop table twoTablecreate table oneTable(id int)
create table twoTable(id varchar(5))if exists(select name from sysobjects where name='delTable' and xtype='FN')
drop function delTable
gocreate function delTable(@n varchar(20))
returns int
as
begin
declare @v int
declare @sql varchar(30)
set @sql='drop table' + @n
exec sp_executesql @sql
if @@error <> 0
set @v = 0
else
set @v = 1
return @v
end
godrop table #tmp
select name into #tmp from sysobjects where xtype='u' and name like '%le'
select dbo.delTable(name) from #tmp提示错误:
Server: Msg 557, Level 16, State 2, Procedure delTable, Line 10
Only functions and extended stored procedures can be executed from within a function.