使用什么参数,如何调用此函数?
CREATE FUNCTION f_DateADD(
@Date datetime,
@DateStr varchar(23)
) RETURNS datetime
想运行此函数,这样写为什么报错?应该如何使用?
f_DateADD('2001-1-01','2001-2-1')
[解决办法]
select dbo.f_DateADD('2001-1-01','2001-2-1')
[解决办法]
引用别人的例子,LZ可以参考下如何使用函数!
create table tab1(CompanyPropertyID varchar(10),CompanyPropertyName varchar(100))
Insert into tab1
select '01','aaa'
union all select '02','bbb'
union all select '03','ccc'
create table tab2(SellID varchar(10),CompanyPropertyIDS varchar(100))
Insert into tab2
select 'A001','01;02;'
union all select 'A001','01'
union all select 'A001','01;03;'
union all select 'A001','01;02;03;'
select * from tab1
select * from tab2
--創建函數處理
create function dbo.fn_f(@s varchar(1000))
returns varchar(1000)
as
begin
declare @a varchar(1000)
declare @i int
set @a=''
set @i=1
while @i>0
begin
select @a=@a+CompanyPropertyName+';' from tab1 where CompanyPropertyID=substring(@s,@i,2)
set @i=charindex(';',@s,@i+3)-2
end
return(left(@a,len(@a)-1))
end
--刪除
drop table tab1
drop table tab2
drop function dbo.fn_f
--結果
select SellID,CompanyPropertyName=dbo.fn_f(CompanyPropertyIDS) from tab2
SellID CompanyPropertyName
---------------------------------------------
A001 aaa;bbb
A001 aaa
A001 aaa;ccc
A001 aaa;bbb;ccc
[解决办法]
加上函数所有者dbo
dbo.f_DateADD
[解决办法]
select dbo.f_DateADD
[解决办法]
select dbo.f_DateADD('2001-1-01','2001-2-1')
我刚才试过了啊.没问题.
结果是:
4002-03-02 00:00:00.000
[解决办法]
select dbo.f_DateADD('2001-1-01','2001-2-1')
[解决办法]
完美的例子CREATE FUNCTION f_DateADD(@Date datetime, @DateStr varchar(23) ) RETURNS datetime begindeclare @@Date datetimeselect @@Date=datediff(year,@Date,convert(datetime,@DateStr))return @@Dateendgoselect dbo.f_DateADD('2001-1-01','2001-2-1')/*-----------------------1900-01-01 00:00:00.000*/