CREATE proc createview
@viewname varchar(100),
@bdate datetime,
@edate datetime
as
declare @sql varchar(1000)   --这个变量要定义大一点set @viewname='tmp'+@viewnameset @sql='create view ['+@viewnames+']
        as 
        select * from [table1] where d between ''' +CONVERT(varchar(10),@bdate,120)+''' and '''+CONVERT(varchar(10),@edate,120)+''''exec (@sql)
GO

解决方案 »

  1.   

    CREATE proc createview
    @viewname nvarchar(30),  --少逗号
    @bdate datetime,
    @edate datetime
    as
    declare @sql nvarchar(4000)   --这个变量要定义大一点
    declare @viewnames nvarchar(40)  --这个变量要定义大一点
    begin
    set @viewnames='tmp'+@viewname
    set @sql='create view ['+@viewnames+']
            as 
            select * from [table1] where d between''' +cast(@bdate as varchar) +''' and ''' +cast(@bdate as varchar)+''''         -- 时间要用引单包起来

    end
    exec (@sql)
    GO
      

  2.   

    CREATE proc createview
    @viewname varchar(100),
    @bdate datetime,
    @edate datetime
    as
    declare @sql varchar(1000)
    set @sql='create view [tem'+@viewnames+'] as select * from [table1] where d between ''' +CONVERT(varchar(10),@bdate,120)+''' and '''+CONVERT(varchar(10),@edate,120)+''''
    exec (@sql)
    GO
      

  3.   

    '这不是昨天晚上楼主很早结贴的那个吗?我后面发了一个回复,其实错误不少CREATE proc createview
    @viewname nvarchar(30),  --少逗号
    @bdate datetime,
    @edate datetime
    as
    declare @sql nvarchar(8000)   --这个变量要定义大一点
    declare @viewnames nvarchar(40)  --这个变量要定义大一点
    begin
    set @viewnames='tmp'+@viewname
    set @sql='create view ['+@viewnames+']
            as 
            select * from [table1] where d between''' --这里要加单绰号
    +cast(@bdate as varchar)
     +''' and ''' +cast(@bdate as varchar)+'''' --这里要加单绰号
    end
    exec (@sql)
    GO
      

  4.   

    那我可不可以在view中新增一自動增長id(identity)列呢。