有關ASP執行存儲過程中的日期類型

轉自: http://topic.youkuaiyun.com/t/20010724/16/207190.html

楼主brain_wiser(风风无路)2001-07-24 16:10:09 在 Web 开发 / ASP 提问

请帮我看看这段代码,有什么问题!  
  该存储过程我在SQL的查询分析器下施行没有问题,可一用Command调用,就出现问题,好像不施行存储过程。  
   
  //==================  
  参数不会有问题,我都测试过  
   
  报错为:  
   
      Microsoft   OLE   DB   Provider   for   ODBC   Drivers   错误   '80040e21'    
   
  [Microsoft][ODBC   SQL   Server   Driver]Optional   feature   not   implemented    
   
  /users/add.asp,行135    
   
   
   
  =================================  
      set   conn=server.CreateObject("adodb.connection")  
  conn.connectionstring="dsn=bgqc"  
  conn.open  
      set   com=server.CreateObject("ADODB.Command")  
  com.ActiveConnection=conn  
  com.CommandText="commonuser_add"  
  com.CommandType=adCmdStoredProc  
  '--------------------------------------------------------创建参数  
  com.Parameters.Append   com.CreateParameter("@username",adChar,adParamInput,10)  
  com.Parameters.Append   com.CreateParameter("@realname",adChar,adParamInput,10)  
  com.Parameters.Append   com.CreateParameter("@userright",adTinyInt,adParamInput,1)  
  com.Parameters.Append   com.CreateParameter("@password",adChar,adParamInput,10)  
  com.Parameters.Append   com.CreateParameter("@gender",adChar,adParamInput,2)  
  com.Parameters.Append   com.CreateParameter("@email",adChar,adParamInput,20)  
  com.Parameters.Append   com.CreateParameter("@province",adChar,adParamInput,10)  
  com.Parameters.Append   com.CreateParameter("@city",adChar,adParamInput,10)  
  com.Parameters.Append   com.CreateParameter("@address",adChar,adParamInput,80)  
  com.Parameters.Append   com.CreateParameter("@zip",adChar,adParamInput,6)  
  com.Parameters.Append   com.CreateParameter("@idno",adChar,adParamInput,18)  
   
  com.Parameters.Append   com.CreateParameter("@hometel",adChar,adParamInput,15)  
  com.Parameters.Append   com.CreateParameter("@worktel",adChar,adParamInput,20)  
  com.Parameters.Append   com.CreateParameter("@cell",adChar,adParamInput,15)  
  com.Parameters.Append   com.CreateParameter("@industry",adChar,adParamInput,20)  
  com.Parameters.Append   com.CreateParameter("@occupation",adChar,adParamInput,20)  
  com.Parameters.Append   com.CreateParameter("@income",adChar,adParamInput,10)  
  com.Parameters.Append   com.CreateParameter("@logoncount",adInteger,adParamInput,4)  
  com.Parameters.Append   com.CreateParameter("@logintime",adDate,adParamInput,8)  
  com.Parameters.Append   com.CreateParameter("@ip",adChar,adParamInput,16)  
  com.Parameters.Append   com.CreateParameter("@isip",adTinyInt,adParamInput,1)  
  com.Parameters.Append   com.CreateParameter("@isuser",adTinyInt,adParamInput,1)  
  ''--------------------------------------------------------------------------------------------------------------  
   
  com("@username")=mname  
  com("@realname")=mrealname  
  com("@userright")=muserright  
  com("@password")=mpassword  
  com("@gender")=mgender  
  com("@email")=memail  
  com("@province")=mprovince  
  com("@city")=mcity  
  com("@address")=maddress  
  com("@zip")=mzip  
  com("@idno")=midno  
  com("@hometel")=mhometel  
  com("@worktel")=mworktel  
  com("@cell")=mcell  
  com("@industry")=mindustry  
  com("@occupation")=moccupation  
  com("@income")=mincome  
  com("@logoncount")=mlogoncount  
  com("@logintime")=mlogintime  
  com("@ip")=mip  
  com("@isip")=misip  
  com("@isuser")=misuser  
  com.Execute         //行135    
    ==================================  
  报错为:  
   
      Microsoft   OLE   DB   Provider   for   ODBC   Drivers   错误   '80040e21'    
   
  [Microsoft][ODBC   SQL   Server   Driver]Optional   feature   not   implemented    
   
  /users/add.asp,行135    
   
   
  =======================================  
  存储过程是:  
  CREATE   PROCEDURE   commonuser_add  
  (  
    @username   char(10),  
    @realname     char(10),  
    @userright       tinyint,  
    @password     char(10),  
    @gender         char(2),  
    @email             char(20),  
    @province   char(10),  
    @city                   char(10),  
    @address     char(80),  
    @zip                     char(6),  
    @idno                 char(18),  
    @hometel     char(15),  
    @worktel       char(20),  
    @cell                   char(15),  
    @industry       char(20),  
    @occupation   char(20),  
    @income   char(10),  
    @logoncount   int,  
    @logintime   datetime,  
    @ip   char(16),  
    @isip   tinyint,  
    @isuser   tinyint  
  )  
    AS  
  INSERT     commonuser  
  (username,realname,userright,password,gender,email,province,city,address,zip,idno,hometel,worktel,cell,industry,occupation,income,logoncount,logintime,ip,isip,isuser)    
  values    
  (@username,@realname,@userright,@password,@gender,@email,@province,@city,@address,@zip,@idno,@hometel,@worktel,@cell,@industry,@occupation,@income,@logoncount,@logintime,@ip,@isip,@isuser)  
  GO  
   
  问题点数:20、回复次数:8Top

1 楼freezwy(网络自由人)回复于 2001-07-24 16:20:53 得分 0

你包含了adovbs.inc了吗?Top

2 楼brain_wiser(风风无路)回复于 2001-07-24 16:34:47 得分 0

To:freezwy(网络自由人)   
     
  有的。  
    你看有什么问题。现在我发现的问题好像是:com.execute没作用。Top

3 楼freezwy(网络自由人)回复于 2001-07-24 16:41:45 得分 20

你检查你的参数长度都是正确的吗?如果参数的长度正确就不会出问题的。  
  另外出现这个问题还有一个可能的原因是,参数类型不正确。比如  
  时间型使用adDBTimeStamp,长度为8。  
  另外,参数最好使用varchar形的,就是把adchar全部改为advarchar  
  下面这些东西对你非常有帮助的。  
  ========================================================  
      参许参数值的类型的意义如下:    
        名称值                           整数值                       功能    
    adDBTimeStamp             135                             日期时间数据类型    
    adDecimal                     14                               十进制整数值    
    adDouble                       5                                 双精度小数值    
    adError                         10                               系统错误信息    
        AdGUID                           72                               全域性唯一识别字(Globally   unique   identifier)    
        adDispath                     9                                 COM/OLE自动对象(Automation   Object)    
        adInteger                     3                                 4字节有符号整数    
        adIUnknown                   13                               COM/OLE对象    
        adLongVarBinary         205                             大型2字节值    
        adLongVarChar             201                             大型字符串值    
        adLongVarWChar           203                             大型未编码字符串    
        adNumeric                     131                             十进制整数值    
        adSingle                       4                                 单精度浮点小数    
        adSmallInt                   2                                 2字节有符号整数    
        adTinyInt                     16                               1字节有符号整数    
        adUnsignedBigInt       21                               8字节无符号整数    
        adUnsignedInt             19                               4字节无符号整数    
        adUnsignedSmallInt   18                               2字节无符号整数    
        adUnsignedTinyInt     17                               1字节无符号整数    
        adUserDefined             132                             用户自定义数据类型    
        adVariant                     12                               OLE对象    
        adVarBinary                 204                             双字节字符变量值    
        adVarChar                     200                             字符变量值    
        advarchar                     202                             未编码字符串变量值    
        adWchar                         130                             未编码字符串    
          
        方向值的意义如上:    
        名称值                           整数值                       功能    
        adParamInput               1                                 允许数据输入至该参数当中    
        adParamOutput             2                                 允许数据输出至该参数当中    
        adParamInputOutput   3                                 允许数据输入、输出至该参数当中    
        adparamReturnValue   4                                 允许从一子程序中返回数据至该参数当中   Top

4 楼brain_wiser(风风无路)回复于 2001-07-24 16:44:30 得分 0

谢谢,我查一查。Top

5 楼freezwy(网络自由人)回复于 2001-07-24 16:46:44 得分 0

有问题就继续弄这个帖子里,我继续关注这个问题的。Top

6 楼brain_wiser(风风无路)回复于 2001-07-24 16:49:24 得分 0

非常感谢!  
      就是出现在时间数据类型这地方,已经解决,谢谢,分已送出!Top

7 楼freezwy(网络自由人)回复于 2001-07-24 16:53:35 得分 0

因为在SQL   SERVER中char类型是强制等长度的方式存储,如果不足你指定的长度,那系统自动加剩余长度个空格,导致在取出字段后,必须trim()一次,否则很容易出错,在传递参数时,如果不处理空格,也很难受。正是因为这些,强烈建议,对于不确定长度的字符串,都使用varchar,这样,在存储过程和程序中也很好处理。对于时间型的数据,最好使用smalldatetime   
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值