不能实现视图只接受纯SQL,不接受参数。

解决方案 »

  1.   

    是啊使用proc啊 不行的话,使用函数
      

  2.   

    create function fn_calendar(@date datetime)
        returns @t table (日varchar(2), 一varchar(2), 二varchar(2), 三varchar(2), 四varchar(2), 五varchar(2), 六varchar(2))
    as
    begin
        declare @offset int, @max int
        set @date = convert(varchar(6), @date, 112) + '01'
        set @offset = (@@datefirst + datepart(weekday, @date) - 1) % 7
        set @max = 33 - day(@date + 31)
        declare @month table(id tinyint identity, date datetime, week tinyint)
        insert @month select top 31 null, null from sysobjects
        update @month set date = @date + id - 1, week = (id + @offset - 1) % 7
        insert
            @t
        select
            max(case week when 0 then ltrim(id) else '' end),
            max(case week when 1 then ltrim(id) else '' end),
            max(case week when 2 then ltrim(id) else '' end),
            max(case week when 3 then ltrim(id) else '' end),
            max(case week when 4 then ltrim(id) else '' end),
            max(case week when 5 then ltrim(id) else '' end),
            max(case week when 6 then ltrim(id) else '' end)
        from
            @month
        where
            id < @max
        group by
            (id + @offset - 1) / 7
        return
    end
    go
    select * from fn_calendar(getdate())
      

  3.   

    view 是局部数据的投影,不是过滤器,不能实现按参数view.
      

  4.   

    proc 吧试图的实质也是SQL语句!
      

  5.   

    写个存储过程实现.
    sql server的视图是不能有参数的编程的客户端ado command,ado recordset倒是可实现.
    在客户端只要打上问号就行!select * frmo 表 where 字段1=? and 字段2=?
    可自动建2参数
    在adocommand的paramaters属性中输入参数值,再执行查询即可