那个getDate()没有问题 我这样使用都可以 print a(getdate())单独的select * from b('char1','char2')也能用。就是把他们放到一起就不行了。
发现问题了.CREATE FUnction a (@ia datetime) returns varchar(100) as begin declare @a varchar(100) set @a='100' return @a endcreate function b (@a varchar(100)) returns varchar(100) as begin return @a endselect dbo.b(dbo.a(getdate())) -------------------------------------------- 你的应该改成. select * from dbo.b(dbo.a(getdate()),'char')
我是加了dbo的,报错说 "."附近有错误。 你试了的行吗?
CREATE FUnction a (@ia datetime) returns varchar(100) as begin declare @a varchar(100) set @a='100' return @a endcreate function b (@a varchar(100)) returns varchar(100) as begin return @a endselect dbo.b(dbo.a(getdate())) /*------------------ 100 */drop function a,b
注意你function放在哪个数据库中如果是放在pub中的话应该这样写select * from pub.dbo.b(pub.dbo.a(getdate()),'char')或者你把函数放在master库也行
同意楼上也可以 use pubsselect * from dbo.b(dbo.a(getdate()),'char')
你看看,我就是用了邹大哥的一个分割字符串的方法 CREATE FUNCTION dbo.a (@ProductDate datetime) RETURNS varchar(800) AS BEGIN declare @char varchar(800) set @char = @ProductDate return @char end goCREATE FUNCTION dbo.b( @str varchar(1600) --要分拆的字符串 ,@spli varchar(10) --字符串分隔符 ) returns @re table(istr varchar(20)) as begin declare @i int,@splen int select @splen=len(@spli) ,@i=charindex(@spli,@str) while @i>0 begin insert into @re values(left(@str,@i-1)) select @str=substring(@str,@i+@splen,1600) ,@i=charindex(@spli,@str) end if @str<>'' insert into @re values(@str) return end goprint dbo.a(getdate()) select * from dbo.b(dbo.a(getdate()),' ') drop function dbo.a,dbo.b
我把自己的也改了一下.CREATE FUnction a (@ia datetime) returns varchar(100) as begin declare @a varchar(100) set @a='100' return @a end gocreate function b (@a varchar(100)) returns @re table(a varchar(100)) as begin insert @re select @a return end goselect * from dbo.b(dbo.a(getdate())-----------不行.
我也发现了 可能是在select 语句中,不能这样使用吧
TRY;用一变量来接收函数A的返回值. CREATE FUnction a (@ia datetime) returns varchar(100) as begin declare @a varchar(100) set @a='100' return @a end gocreate function b (@a varchar(100)) returns @re table(a varchar(100)) as begin insert @re select @a return end go declare @a varchar(100) set @a =dbo.a(getdate()) select * from dbo.b(@a)drop function a,b
我这样使用都可以
print a(getdate())单独的select * from b('char1','char2')也能用。就是把他们放到一起就不行了。
returns varchar(100)
as
begin
declare @a varchar(100)
set @a='100'
return @a
endcreate function b (@a varchar(100))
returns varchar(100)
as
begin
return @a
endselect dbo.b(dbo.a(getdate()))
--------------------------------------------
你的应该改成.
select * from dbo.b(dbo.a(getdate()),'char')
你试了的行吗?
returns varchar(100)
as
begin
declare @a varchar(100)
set @a='100'
return @a
endcreate function b (@a varchar(100))
returns varchar(100)
as
begin
return @a
endselect dbo.b(dbo.a(getdate()))
/*------------------
100
*/drop function a,b
就可以使用,但是我的就是报“ '.' 附近有语法错误。”
不知道是怎么回事。
use
pubsselect * from dbo.b(dbo.a(getdate()),'char')
CREATE FUNCTION dbo.a
(@ProductDate datetime)
RETURNS varchar(800) AS
BEGIN
declare @char varchar(800)
set @char = @ProductDate
return @char
end
goCREATE FUNCTION dbo.b(
@str varchar(1600) --要分拆的字符串
,@spli varchar(10) --字符串分隔符
)
returns @re table(istr varchar(20))
as
begin
declare @i int,@splen int
select @splen=len(@spli)
,@i=charindex(@spli,@str)
while @i>0
begin
insert into @re values(left(@str,@i-1))
select @str=substring(@str,@i+@splen,1600)
,@i=charindex(@spli,@str)
end
if @str<>'' insert into @re values(@str)
return
end
goprint dbo.a(getdate())
select * from dbo.b(dbo.a(getdate()),' ')
drop function dbo.a,dbo.b
returns varchar(100)
as
begin
declare @a varchar(100)
set @a='100'
return @a
end
gocreate function b (@a varchar(100))
returns @re table(a varchar(100))
as
begin
insert @re
select @a
return
end
goselect * from dbo.b(dbo.a(getdate())-----------不行.
可能是在select 语句中,不能这样使用吧
CREATE FUnction a (@ia datetime)
returns varchar(100)
as
begin
declare @a varchar(100)
set @a='100'
return @a
end
gocreate function b (@a varchar(100))
returns @re table(a varchar(100))
as
begin
insert @re
select @a
return
end
go
declare @a varchar(100)
set @a =dbo.a(getdate())
select * from dbo.b(@a)drop function a,b