set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[ProcCreateAlarmLogTableCreate]
AS
declare @tablename nvarchar(50)
set @tablename= 'AlarmLog' + convert(nvarchar(10),year(getdate()))+ convert(nvarchar(10),month(getdate()))+ convert(nvarchar(10),day(getdate())) 
declare @a nvarchar(max)
set @a='create table '+@tablename +'
 (  
  AlarmID int primary key Identity(1,1), 
    InterphoneID nvarchar(50),  
  Alarmtime datetime,  
AddTime datetime null DEFAULT (getdate()) ) '
exec(@a)
然后查询分析器里运行它,输入命令:
use GpsInterphone;
exec [ProcCreateAlarmLogTableCreate];
有错误提示,怎么回事?
消息 102,级别 15,状态 1,第 2 行
' ' 附近有语法错误。

解决方案 »

  1.   

    set @a='create table '+@tablename +'
     (AlarmID int Identity(1,1) primary key ,  
     InterphoneID nvarchar(50),   
     Alarmtime datetime,   
     AddTime datetime not null DEFAULT getdate()) '
    exec(@a)
      

  2.   


    set @a='create table '+@tablename +'
    (AlarmID int Identity(1,1) primary key ,  
     InterphoneID nvarchar(50),   
     Alarmtime datetime,   
     AddTime datetime not null DEFAULT getdate()) '
     select @a
    exec(@a)'+@tablename +'后面有全角空格
      

  3.   


    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go
    alter PROCEDURE [dbo].[ProcCreateAlarmLogTableCreate] 
    AS
    declare @tablename nvarchar(50)
    set @tablename= 'AlarmLog' + convert(nvarchar(10),year(getdate()))+ convert(nvarchar(10),month(getdate()))+ convert(nvarchar(10),day(getdate()))  
    declare @a nvarchar(max)
    set @a='create table '+@tablename +'
    (AlarmID int Identity(1,1) primary key ,  
     InterphoneID nvarchar(50),   
     Alarmtime datetime,   
     AddTime datetime not null DEFAULT getdate()
     ) '
    exec(@a)exec [ProcCreateAlarmLogTableCreate]
      

  4.   

    把下面代码复制到sqlserver中:
    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go
    ALTER PROCEDURE [dbo].[ProcCreateAlarmLogTableCreate] 
    AS
    declare @tablename nvarchar(50)
    set @tablename= 'AlarmLog' + convert(nvarchar(10),year(getdate()))+ convert(nvarchar(10),month(getdate()))+ convert(nvarchar(10),day(getdate()))  
    declare @a nvarchar(max)
    set @a='create table '+@tablename +'(AlarmID int primary key Identity(1,1),InterphoneID nvarchar(50),Alarmtime datetime,AddTime datetime null DEFAULT(getdate())) '
    exec(@a)这样就可以运行了