问题1:
/*--查询090101-090103排班--*/
use Attendance 
if exists (select * from sysobjects where name='pro_pbz9')
drop proc proc_pbz9
go
create proc proc_pbz9
as
declare @sql varchar(8000)
set @sql='select * from personbanzhong where  convert(varchar(10),pbz_date,121)  between '''+2010-09-01+''' and '''+2010-09-03'''' 
exec(@sql)
go
exec proc_pbz9
服务器: 消息 170,级别 15,状态 1,过程 proc_pbz9,行 4
第 4 行: ''' 附近有语法错误。
服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: 'and2010' 附近有语法错误。问题2:
/*---求特定月份班种表---*/use Attendance 
if exists (select * from sysobjects where name='pro_pbz9')
drop proc proc_pbz9
go
create proc proc_pbz9
@year varchar(10) ,
@month varchar(10),
as
declare @sql varchar(8000)
/*----------------条件不会,请帮忙----------------------*/
set @sql='select * from personbanzhong where pbz_data(时间格式是2010-09-03 00:00:00) 条件  ???'
exec(@sql)
go
exec proc_pbz9

解决方案 »

  1.   

    use Attendance 
    if exists (select * from sysobjects where name='pro_pbz9')
    drop proc proc_pbz9
    go
    create proc proc_pbz9
    as
    declare @sql varchar(8000)
    set @sql='select * from personbanzhong 
    where convert(varchar(10),pbz_date,121) between 
    ''2010-09-01'' and ''2010-09-03''' 
    exec(@sql)
    go
    exec proc_pbz9use Attendance 
    if exists (select * from sysobjects where name='pro_pbz9')
    drop proc proc_pbz9
    go
    create proc proc_pbz9
    @year varchar(10) ,
    @month varchar(10),
    as
    declare @sql varchar(8000)
    /*----------------条件不会,请帮忙----------------------*/
    set @sql='select * from personbanzhong where pbz_data=''2010-09-03 00:00:00'''
    exec(@sql)
    go
    exec proc_pbz9
      

  2.   

    '''+2010-09-01+''' and '''+2010-09-03''''  这些都是常量,干嘛要加“+”--加号?去掉四个加号试试。
      

  3.   

    set @sql='select * from personbanzhong where convert(varchar(10),pbz_date,121) between ''+2010-09-01+'' and ''+2010-09-03''' 
      

  4.   

    declare @sql varchar(8000)
    declare @str varchar(100)
    declare @str2 varchar(100)
    set @str='2010-08-04'
    set @str2 = '2010-08-16'
    set @sql='select * from personbanzhong where convert(varchar(10),pbz_date,121) between '''+@str+''' and '''+@str2+'''' 
    print @sql
      

  5.   

    两个''转义成一个'运行拼接字符串前最好用print @sql 先打印出来,然后复制出来执行一下
      

  6.   

    问题2中,年@year,月@month不是固定的,参数,希望帮忙修改
      

  7.   

    原题应为:
    问题2:
    /*---求特定月份班种表---*/use Attendance  
    if exists (select * from sysobjects where name='pro_pbz9')
    drop proc proc_pbz9
    go
    create proc proc_pbz9
    @year varchar(10) ,
    @month varchar(10),
    as
    declare @sql varchar(8000)
    /*----------------条件不会,请帮忙----------------------*/
    set @sql='select * from personbanzhong where pbz_data 条件 ???'
    exec(@sql)
    go
    exec proc_pbz9
      

  8.   


    use Attendance 
    if exists (select * from sysobjects where name='pro_pbz9')
    drop proc proc_pbz9
    go
    create proc proc_pbz9
    (
    @year int,
    @month int
    )
    as
    declare @sql varchar(8000)
    /*----------------条件不会,请帮忙----------------------*/
    set @sql='select * from personbanzhong where datepart(yy,pbz_date)='+cast(@year as varchar(10))+'and datepart(mm,pbz_date)='+cast(@month as varchar(10))+''print(@sql)
    go
    exec proc_pbz9 2010,09把年,月单独出来