Access中能自定义函数吗?如何将SQLServer中用户定义函数转到Access中?
Access中能自定义函数吗?
下面的SQLServer中用户定义函数,如何转到Access中?
CREATE function f_cid_Cata(@id int
)returns @re table([CataNo] int,[CataName] varchar(50),[ParentNo] int,[level] int)
as
begin
declare @l int
set @l=0
insert @re select CataNo,CataName,ParentNo,Null from PicCata where CataNo=@ID
while @@rowcount> 0
begin
set @l=@l+1
insert @re select a.CataNo,a.CataName,a.ParentNo,@l
from [PicCata] a,@re b
where a.[ParentNo]=b.[CataNo] and a.CataNo not in (select CataNo from @re)
end
return
end
------解决方案--------------------首先明确:
Access使用的是Jet-SQL,SQL Server使用的是T-SQL,两者用法上相差很大。
JET SQL 帮助(jet4 access2000)下载地址
http://www.access911.net/index.asp?board=8&recordid=75FAB71E&tt=
------解决方案--------------------SQL Server的后台函数直接返回一个记录集,而Access需要在“模块”中新建一个函数,用VBA代码处理。
两者使用有着非常大的区别。
Access的函数只能返回数值,而不是集合,但可以在函数中将需要的数据保存到表中。
------解决方案--------------------有UDF,但你的函数不能直接转换,T-SQL与JET SQL是不同的,你返回的是一
TABLE数据类型变量,在ACCESS中是没有的,只有通过VBA来实现。
------解决方案--------------------实际上SQL SERVER的存储过程与VBA编程相差不大,只不过具体的语言形式不同而已,
思路基本一致。
------解决方案--------------------没有其他更好的办法
------解决方案--------------------在 ACCESS 中在函数中直接建立个表不就得了