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

存储过程中:前缀数目超过了最大值。最大值为 3的问题,让我想了一天多没见成功?

楼主love007(风中的风)2005-08-17 13:24:32 在 MS-SQL Server / 疑难问题 提问

....连接数据库......  
  ----把本地数据的发件信箱中的数据取到远程服务器上去进行正式邮件发送  
  if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[proc_localSendEmail_Import_ebay]')   and   OBJECTPROPERTY(id,   N'IsProcedure')   =   1)  
  drop   procedure   [dbo].[proc_localSendEmail_Import_ebay]  
  go  
  create   procedure   proc_localSendEmail_Import_ebay  
  as  
  begin  
  --本地邮件变量  
  declare   @localMid       bigint                                 --本地MID  
                  declare   @ebusid                       varchar(30)                       --本地ebusid  
                  declare   @ebusiaccount           varchar(200)                     --本地ebusiaccount  
                  declare   @clientID             varchar(60)                       --clientid  
                  declare   @Userid                   varchar(60)                     --USERID(在ebay上的购买用户帐号)  
  declare   @TransactionID         varchar(100)         --交易ID号码  
  declare   @mailHost                   varchar(100)           --邮件服务  
  declare   @mailfrom                   varchar(200)           --邮件发送人  
  declare   @mailto                       varchar(200)           --邮件接收人  
  declare   @mailsubject             varchar(2000)         --邮件主题  
  declare   @ptrval       varbinary(16) --指针地址1  
  declare   @p                                 varbinary(16)  
  declare   @Item_Number             varchar(100)           --Listing条目编号  
  declare   @mailremark               varchar(3000)         --备注  
  declare   @mailsing                   varchar(10)             --标志     'A'为已标记 'B'为未标记  
  declare   @mailsingdate           datetime                   --标志日期  
  declare   @SendStatus               char(1)                     --发送是否成功   0.失败   1。成功   2.未发送  
  declare   @OperNo                       varchar(30)       --操作员编号  
   
  --远程邮件变量  
  declare   @NewMid                     bigint               --远程自动增长ID  
                  declare   @Newmailsenddate   varchar(100)   --发送时间  
                  declare   @NewSendStatus       char(1)             --发送状态  
                  declare   @NewSendErrMsg       varchar(1000)--发送错误原因  
   
  --取本地发件信箱中的数据,从efuture_email取发件信箱中未发送的邮件到远程发服务上去  
  DECLARE   ebay_sendEmail   CURSOR   FOR     select   Mid,eBusid,ebusiaccount,clientID,Userid,TransactionID,mailHost,mailfrom,mailto,mailsubject,Item_Number,mailremark,mailsing,mailsingdate,OperNo,SendStatus   from   Efuture_email   where   mailSort='2'   and   SendStatus='2';  
  --打开游标  
  OPEN   ebay_sendEmail;  
  --执行游标  
  FETCH   NEXT   FROM   ebay_sendEmail   INTO   @localMid,@ebusid,@ebusiaccount,@clientID,@Userid,@TransactionID,@mailHost,@mailfrom,@mailto,@mailsubject,@Item_Number,@mailremark,@mailsing,@mailsingdate,@OperNo,@SendStatus  
  --开始执行  
  IF   (@@FETCH_STATUS   =   0)  
  begin  
  WHILE   (@@FETCH_STATUS   =   0)  
  begin  
  --检查localMid在远程数据库中是否存在(提示远程的数据库)  
  select   @Newmailsenddate=MailSenddate,@NewSendStatus=SendStatus,@NewSendErrMsg=SendErrMsg   from   ebay.ebay.dbo.ebay_Email   where   localMid=@localMid;  
                                                  --如果存在的话,那么检查状态不等于失败的邮件并邮件的状态等信息更改过来  
  if(@@rowcount>0)  
  begin  
  --更改状态不等于失败的信息  
  Update   efuture_email   set   Mailsenddate   =   @Newmailsenddate,SendStatus=@NewSendStatus,SendErrMsg=@NewSendErrMsg   where   Mid=@localMid   and   SendStatus='2';  
  end  
  --如果不存在的话,那就插入到远程的数据库中去进行正式发送  
  else  
  begin  
  --插入到远程数据库中去ebay_email中去  
  insert   into   ebay.ebay.dbo.ebay_Email  
  (  
  Mid,eBusid,ebusiaccount,clientID,Userid,TransactionID,  
  mailHost,mailfrom,mailto,mailsubject,Mailbody,Item_Number,mailremark,  
  mailsing,mailsingdate,OperNo,SendStatus  
  )  
  values  
  (  
  @localMid,@ebusid,@ebusiaccount,@clientID,@Userid,@TransactionID,  
  @mailHost,@mailfrom,@mailto,@mailsubject,'',@Item_Number,@mailremark,  
  @mailsing,@mailsingdate,@OperNo,@SendStatus  
  )  
  --更新Mailbody  
  set   @NewMid=@@IDENTITY  
  --本地得到mailbody  
  select   @ptrval   =   textptr(MailBody)   from   efuture_email   where   Mid=   @localMid;    
  --从远程得到mailbody  
  select   @p   =   textptr(MailBody)   from   ebay.ebay.dbo.ebay_Email   where   Mid=   @NewMid;    
  --判断是否为空  
  if   @p   is   not   null          
  --更新,问题所在????  
  UpdateText   ebay.ebay.dbo.ebay_Email.Mailbody   @p   0   Null   efuture_email.Mailbody   @ptrval    
  end  
  --继续执行  
  FETCH   NEXT   FROM   ebay_sendEmail   INTO   @localMid,@ebusid,@ebusiaccount,@clientID,@Userid,@TransactionID,@mailHost,@mailfrom,@mailto,@mailsubject,@Item_Number,@mailremark,@mailsing,@mailsingdate,@OperNo,@SendStatus  
   
  end  
  end  
  --关闭游标  
  CLOSE   ebay_sendEmail;  
  --销毁游标  
  DEALLOCATE   ebay_sendEmail;  
  end  
  问题就出现在:  
  UpdateText   ebay.ebay.dbo.ebay_Email.Mailbody   @p   0   Null   efuture_email.Mailbody   @ptrval    
  错误提示如下:  
  服务器:   消息   117,级别   15,状态   2,过程   proc_localSendEmail_Import_ebay,行   74  
  数字   名称   'ebay.ebay.dbo.ebay_Email'   包含的前缀数目超过了最大值。最大值为   3。  
  请问有哪位大哥能解决这个问题?? 问题点数:20、回复次数:7Top

1 楼klan(因帅被判7年)回复于 2005-08-17 14:37:58 得分 0

server名.数据库名.dbo.表名  
   
  你后面又多了格mailbody是什么啊?   的确错了啊Top

2 楼filebat(Mark)回复于 2005-08-17 15:03:11 得分 0

我也想过这个问题,   
   
  不过还没碰到过。  
   
  关注一下。Top

3 楼love007(风中的风)回复于 2005-08-17 16:41:28 得分 0

高手请进.谢谢Top

4 楼purecoffee(清咖)回复于 2005-09-11 22:58:40 得分 0

同样的问题,关注。。。。。。Top

5 楼tigerjacky(林石--抢滩VC)回复于 2005-09-12 08:59:35 得分 0

关注  
  ebay.ebay.dbo.ebay_Email.Mailbody     是不是这个?最多只用到四层.这里用了五层?Top

6 楼lh1979(rocket)回复于 2005-09-12 11:45:07 得分 10

在远程机器上写存储过程,然后本地调用远程的存储过程就可以解决Top

7 楼rouqu(石林#黄果树)回复于 2005-09-12 15:45:05 得分 10

ebay.ebay.dbo.ebay_Email.Mailbody    
    |         |                       |                   |  
  机器   数据库             表名             列名  
  名称     名称  
   
  换成   USE   {   database   }   再试Top

相关问题

  • 'System.Web.UI.WebControls' 包含的前缀数目超过了最大值
  • 数字 名称 '10.60.0.9.master.dbo.sysdatabases' 包含的前缀数目超过了最大值。最大值为 3。
  • 求SQL语句或者存储过程,不连续最大值问题,急!
  • 用户建立的存储过程用什么前缀?
  • 参数数目不确定如何构造存储过程???
  • 在存储过程中动态生成一个查询,返回查询结果(如最大值),并赋给存储过程中的一个变量,该怎么写?
  • 存储过程中的参数的数目是不是有限制啊?
  • 存储过程
  • 存储过程
  • 存储过程

关键词

  • ebay
  • 存储过程
  • 远程
  • 邮件
  • 数据库
  • 数据
  • 信箱
  • 最大值
  • ebusid
  • ebusiaccount

得分解答快速导航

  • 帖主:love007
  • lh1979
  • rouqu

相关链接

  • SQL Server类图书

广告也精彩

反馈

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