存储过程如下,通过传入的参数判断是否存在该用户表,如果不存在就以传入的参数为表名新建。
为什么老是提示什么 必须申明标量变量@usertable,的错误。是不是我的语句写错了?ALTER PROCEDURE dbo.CheckUserTable
@usertable nchar(10)=''
AS
/* SET NOCOUNT ON */
if exists( select * from sysobjects where id=object_id(@usertale) and xtyle='U')
else
{
create table @usertable('name' nchar(20),'sex'nchar(20),'phone'nchar(20),'style'nchar(20),'address'nchar(100),'workinfo',nchar(100))
}
RETURN
为什么老是提示什么 必须申明标量变量@usertable,的错误。是不是我的语句写错了?ALTER PROCEDURE dbo.CheckUserTable
@usertable nchar(10)=''
AS
/* SET NOCOUNT ON */
if exists( select * from sysobjects where id=object_id(@usertale) and xtyle='U')
else
{
create table @usertable('name' nchar(20),'sex'nchar(20),'phone'nchar(20),'style'nchar(20),'address'nchar(100),'workinfo',nchar(100))
}
RETURN
变量是不能这个样子用的 你想想其他办法把·····
@usertable nchar(10)=''
AS
begin
/* SET NOCOUNT ON */
if not exists( select * from sysobjects where id=object_id(@usertable) and xtype='U')
begin
declare @CreateTable nvarchar(1000)
set @CreateTable='create table '
set @CreateTable=@CreateTable+@usertable
set @CreateTable=@CreateTable+'(name nchar(20),sex nchar(20),phone nchar(20),style nchar(20),address nchar(100),workinfo nchar(100))'
print @CreateTable
exec sp_executesql @CreateTable
end
end
alter PROCEDURE dbo.CheckUserTable
@usertable nchar(10)AS
declare @sql varchar(5000)
/* SET NOCOUNT ON */
if not exists( select * from sysobjects where id=object_id(@usertable) and xtype='U')
begin
set @sql = ' create table '+@usertable+'([name] nchar(20),sex nchar(20),phone nchar(20),style nchar(20),address nchar(100),workinfo nchar(100))'
print @sql
exec (@sql)
end
create PROCEDURE dbo.CheckUserTable
@usertable nchar(10)
AS
/* SET NOCOUNT ON */
declare @sql varchar(4000) set @sql='if exists( select * from sysobjects where id=object_id('+@usertable+') and xtyle=''U'')'
set @sql=@sql+'else'
set @sql=@sql+'{'
set @sql=@sql+'create table '+@usertable+'(''name'' nchar(20),''sex''nchar(20),''phone''nchar(20),''style'' nchar(20),''address''nchar(100),''workinfo'',nchar(100)) }'
set @sql=@sql+'RETURN'