CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  ASP

如何在ASP中调用SQL自定义函数?

楼主putinit()2006-03-22 16:01:51 在 Web 开发 / ASP 提问

在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

相关问题

  • 请教: 在DTS 能调用SQL自定义函数吗?
  • 请教: 在DTS 能调用SQL自定义函数吗?
  • DTS的JScript脚本如何调用SQL自定义函数?
  • 问题:Sql Server2000中的自定义函数,如何在前端调用并取得返回值?
  • 我在一个SQL Server的自定义函数中调用一个自定义的存储过程,执行此函数后发出如下提示:“只有函数和扩展存储过程才能从函数内部执行。
  • 关于 PB 自定义函数调用的问题 !!!
  • oracle存储过程中如何调用自定义的函数?
  • 怎样调用CView中的自定义函数刷新屏幕
  • 调用xsl中自定义的函数怎么不起作用?
  • 怎样调用用户自定义函数

关键词

  • 函数
  • 存储过程
  • sql
  • server
  • baokaoyear
  • bmh
  • 自定义函数
  • 调用
  • cmd
  • rv

得分解答快速导航

  • 帖主:putinit
  • lonaerd
  • sky0120
  • s1ihome
  • lizheng_hn
  • levin_2008

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo