SQL 存储过程问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 14:10:52
SQL server2000 在存储过程中,要查询的表名必须事固定的吗?例如:
create proc login
@username nvarchar(50),@userpwd nvarchar(32),@jieguo int output,@quanx nvarchar(50) output
as
if not exists(select * from admin where SMT_nick=@username and SMT_password=@userpwd)
begin
set @jieguo=1
end
else
begin
set @jieguo=2
end

里面的表名~我能用一个输入参数替换吗,那样的话可以多个操作同用一个过程~方便啊~

create proc login
@username nvarchar(50),@userpwd nvarchar(32),@tablename nvarchar(50),@jieguo int output,@quanx nvarchar(50) output
as
declare @sql nvarchar(200)
set @sql='if not exists (select * from '+@tablename+' where SMT_nick='+@username+' and SMT_password=' +@userpwd+')'
exec (@sql)
begin
set @jieguo=1
end
else
begin
set @jieguo=2
end

不可以直接用参数替换,但是你可以用参数拼语句方式 如
create proc test @table_name varchar(20)
as
exec ('select * from '+@table_name+'')