建议楼主还是用动态SQL来做:create proc viewnew
(
@dF datetime,
@dT datetime,
@orderby varchar(20)
)
as
begin
declare @sql varchar(8000)
set @sql='Select * From Employee Where RegisterDate between '+conver(varchar(21),@dF,120)+' and '+conver(varchar(21),@dT,120)+' order by '+@orderby
exec(@sql)
end exec viewnew '2001-01-01','2009-09-09',Emp_Name
(
@dF datetime,
@dT datetime,
@orderby varchar(20)
)
as
begin
declare @sql varchar(8000)
set @sql='Select * From Employee Where RegisterDate between '+conver(varchar(21),@dF,120)+' and '+conver(varchar(21),@dT,120)+' order by '+@orderby
exec(@sql)
end exec viewnew '2001-01-01','2009-09-09',Emp_Name
--try
create proc viewnew
(
@dF datetime,
@dT datetime,
@orderby char(20)
)
as begin
Select * From Employee Where RegisterDate between @dF and @dT
order by @orderby
end
@dF nvarchar(10),
@dT nvarchar(10),
@orderby char(20)
as
begin
declare @sql nvarchar(1000)
select @sql='select * from Employee where RegisterDate between '''+@dF+''' and '''+@dT+''' order by '+@orderby
exec(@sql)
end exec viewnew '2001-01-01','2009-09-09','Emp_Name'
create table employee(id int identity(1,1),RegisterDate datetime,nm varchar(50))
insert into employee(RegisterDate,nm)
select '2008-08-08','xx' union all
select '2008-09-08','yyx' union all
select '2009-08-08','dfd' create proc viewnew
(
@dF datetime,
@dT datetime,
@orderby varchar(50)
)
as begin
exec ('Select * From Employee Where RegisterDate between '''+@dF+''' and '''+@dT+'''
order by '+@orderby+'')
end declare @x datetime,@y datetime,@z varchar(50)
set @x='2008-08-04'
set @y='2008-11-12'
set @z='nm'
exec viewnew @x,@y,@z
('Select * From Employee Where RegisterDate between '''+@dF+'''…
我试过了,这句话不可用,要convert的好像
/*
id RegisterDate nm
----------- ----------------------- --------------------------------------------------
1 2008-08-08 00:00:00.000 xx
2 2008-09-08 00:00:00.000 yyx(2 行受影响)*/