如何在ASP中调用SQL自定义函数?
在SQL数据库中定义一个函数f_getid(),有输入参数baokaoyear,和输出参数ID,使用
ASP中调用SQL中的存储过程的方法,代码如下:
conntol = "driver={SQL Server};server=127.0.0.1;uid=sa;pwd=;database=baokao"
set conn1=server.createobject("adodb.connection")
conn1.open conntol
Set cmd=server.CreateObject("Adodb.Command")
cmd.ActiveConnection = conn1
cmd.CommandType = 4
cmd.commandText = "f_getid"
cmd("@baokaoyear") = 2006
cmd.execute()
rv =cmd("@id")
response.write "rv:"&rv '显示返回值
执行到rv =cmd("@id")时出错:
ADODB.Command 错误 '800a0cc1'
在对应所需名称或序数的集合中,未找到项目。
/reg.asp,行232
求解!!!或是更好的方法!!!
问题点数:30、回复次数:7Top
1 楼lonaerd(redhat10)回复于 2006-03-22 16:11:42 得分 10
???看不懂!!!!
SQL里面的自定义函数是用来做什么的?不就是要么直接为sql语句服务,要么为存储过程服务。
你在ASP里面直接调用函数干什么?
楼主应该创建存储过程,在存储过程里面调用自定义函数,然后再调用存储过程Top
2 楼sky0120(忍者鱼)回复于 2006-03-22 16:12:28 得分 5
'使用Command对象获取存储过程的返回参数
Set Cmd=Server.CreateObject("ADODB.Command")
Set Cmd.ActiveConnection=myconn Cmd.CommandTimeOut=30 '设置Command对象的超时时间为30秒
Cmd.CommandType=4 Cmd.CommandText="InfoAdd"
'设置Cmd对象的参数
Cmd.Parameters.Append Cmd.CreateParameter("Title",200,1,100,title)
Cmd.Parameters.Append Cmd.CreateParameter("Keywd",200,1,100,keywd)
Cmd.Parameters.Append Cmd.CreateParameter("Body",201,1,-1,content)
Cmd.Execute()
IsValid=Cmd.Parameters("valid")'获取返回值Top
3 楼s1ihome(My hometown is a beautiful village)回复于 2006-03-22 16:36:58 得分 5
同一楼Top
4 楼lizheng_hn(穹苍之筝)回复于 2006-03-22 16:49:36 得分 5
应改为pwd=''或pwd=""试试看Top
5 楼levin_2008()回复于 2006-03-22 17:36:03 得分 5
一楼Top
6 楼putinit()回复于 2006-03-22 22:13:16 得分 0
自定义函数是用于在表中查找最小的编号并自动产生编号,代码如下:
CREATE function f_getid(@baokaoyear int)
returns int
as
begin
declare @id int
if not exists(select 1 from BMK where BMH=1 and baokaoyear=@baokaoyear)
set @id=1
else
begin
select @id=max(BMH) from BMK where baokaoyear=@baokaoyear
if @id is null
set @id=1
else
begin
declare @id1 int
select @id1=min(BMH) from BMK a where BMH<>@id and not exists(select 1 from BMK where BMH=a.BMH+1 and baokaoyear=@baokaoyear) and baokaoyear=@baokaoyear
if @id1 is not null set @id=@id1
set @id=@id+1
end
end
lb_re:
return @id
end
使用上面的方法还是出错,请各位再帮帮忙!!
Top
7 楼putinit()回复于 2006-03-22 22:23:03 得分 0
将获取返回值的语句改为
rv=cmd("@return_value")
执行正常,结果正确。。
感谢各位的支持!!!
Top




