存储过程如下,通过传入的参数判断是否存在该用户表,如果不存在就以传入的参数为表名新建。
为什么老是提示什么 必须申明标量变量@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

解决方案 »

  1.   

     create table @usertable('name' nchar(20),'sex'nchar(20),'phone'nchar(20),'style'nchar(20),'address'nchar(100),'workinfo',nchar(100))
    变量是不能这个样子用的 你想想其他办法把·····
      

  2.   

    用动态SQL语句http://www.leftworld.net/wenzhang/show/2151.html
      

  3.   

    alter PROCEDURE dbo.CheckUserTable 
           @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
      
      

  4.   


    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
      

  5.   

    用动态sql语句来写
    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'
      

  6.   

    而且你的=object_id(@usertale) and xtyle='U') 这里这个@usertale打错了,是usertable