这是什么错呀?

时间:2021-07-30 15:38:28
SQL中执行存储过程时:
DB-Library: Unexpected EOF from SQL Server.  General network error.  Check your documentation.
Net-Library error 10054: ConnectionCheckForData ((null)()).

DB-Library Process Dead - Connection Broken

6 个解决方案

#1


Transaction error~~~

#2


不象是。
现在我查出问题来了,是我的一个光标中有问题,
光标定义时SELECT 表达式 AS NAME 这样会出错,SELECT 表达式 这样则不会出错,真是奇怪。
那位兄弟能帮忙解释一下?
SQL65的。 

#3


你说的是游标吗?我有些看不懂你写的,根据错误的提示好像是真的是说你的游标在追踪纪录时出了问题把你的sql写上来我帮你看看估计不会是大问题^Q^

#4


使用了双引号“”,改为单引号‘’试试

#5


是游标。我写错了。
我从来都是用单引号的。
下面是代码(冗长了一点,见笑):

select @ii = 1
declare tftable cursor for 
select convert(char(13),jltime) ,convert(char(13),jlreadnumber) ,convert(char(13),jldate)

  from qa_jlad 
 where jlgs = @hjslc and jldate >= @hdatea and jldate <= @hdateb 
 and jlmac = @hjsdepaa and jlchar = @hjschar order by jldate,jltime
 open tftable
 fetch tftable into @hjssam ,@hjsnumber ,@hjsdate 
while @@fetch_status=0
    begin


      if @ii<=15
     
      begin
       select @aa1 = stuff(@aa1,((@ii-1) *13 + 1) ,datalength(ltrim(rtrim(@hjssam))),ltrim(rtrim(@hjssam)))
       select @bb1 = stuff(@bb1,((@ii-1) *13 + 1) ,datalength(ltrim(rtrim(@hjsnumber))),ltrim(rtrim(@hjsnumber)))

       select @dd1 = stuff(@dd1,((@ii-1) *13 + 1) ,datalength(ltrim(rtrim(@hjsdate))),ltrim(rtrim(@hjsdate)))
       end
      else
       begin

       select @aa2 = stuff(@aa2,((@ii-16) *13 + 1) ,datalength(ltrim(rtrim(@hjssam))),ltrim(rtrim(@hjssam)))

       select @bb2 = stuff(@bb2,((@ii-16) *13 + 1) ,datalength(ltrim(rtrim(@hjsnumber))),ltrim(rtrim(@hjsnumber)))
       select @dd2 = stuff(@dd2,((@ii-16) *13 + 1) ,datalength(ltrim(rtrim(@hjsdate))),ltrim(rtrim(@hjsdate)))
       end
     
      select @ii = @ii + 1
      fetch tftable into @hjssam ,@hjsnumber ,@hjsdate 
    end
 close tftable
 deallocate tftable

问题就在这一句上:
select convert(char(13),jltime) ,convert(char(13),jlreadnumber) ,convert(char(13),jldate)
原来是
select convert(char(13),jltime) AS JLTIME,convert(char(13),jlreadnumber) AS READNUMBER,convert(char(13),jldate) AS JLDATE

真是气死我了。


#6


我看了,呵呵俺不明白,写了那么多的sql语句就没用过select表达式+as的呀你后台挂的是什么数据库?非那样写吗,搞不懂你。

#1


Transaction error~~~

#2


不象是。
现在我查出问题来了,是我的一个光标中有问题,
光标定义时SELECT 表达式 AS NAME 这样会出错,SELECT 表达式 这样则不会出错,真是奇怪。
那位兄弟能帮忙解释一下?
SQL65的。 

#3


你说的是游标吗?我有些看不懂你写的,根据错误的提示好像是真的是说你的游标在追踪纪录时出了问题把你的sql写上来我帮你看看估计不会是大问题^Q^

#4


使用了双引号“”,改为单引号‘’试试

#5


是游标。我写错了。
我从来都是用单引号的。
下面是代码(冗长了一点,见笑):

select @ii = 1
declare tftable cursor for 
select convert(char(13),jltime) ,convert(char(13),jlreadnumber) ,convert(char(13),jldate)

  from qa_jlad 
 where jlgs = @hjslc and jldate >= @hdatea and jldate <= @hdateb 
 and jlmac = @hjsdepaa and jlchar = @hjschar order by jldate,jltime
 open tftable
 fetch tftable into @hjssam ,@hjsnumber ,@hjsdate 
while @@fetch_status=0
    begin


      if @ii<=15
     
      begin
       select @aa1 = stuff(@aa1,((@ii-1) *13 + 1) ,datalength(ltrim(rtrim(@hjssam))),ltrim(rtrim(@hjssam)))
       select @bb1 = stuff(@bb1,((@ii-1) *13 + 1) ,datalength(ltrim(rtrim(@hjsnumber))),ltrim(rtrim(@hjsnumber)))

       select @dd1 = stuff(@dd1,((@ii-1) *13 + 1) ,datalength(ltrim(rtrim(@hjsdate))),ltrim(rtrim(@hjsdate)))
       end
      else
       begin

       select @aa2 = stuff(@aa2,((@ii-16) *13 + 1) ,datalength(ltrim(rtrim(@hjssam))),ltrim(rtrim(@hjssam)))

       select @bb2 = stuff(@bb2,((@ii-16) *13 + 1) ,datalength(ltrim(rtrim(@hjsnumber))),ltrim(rtrim(@hjsnumber)))
       select @dd2 = stuff(@dd2,((@ii-16) *13 + 1) ,datalength(ltrim(rtrim(@hjsdate))),ltrim(rtrim(@hjsdate)))
       end
     
      select @ii = @ii + 1
      fetch tftable into @hjssam ,@hjsnumber ,@hjsdate 
    end
 close tftable
 deallocate tftable

问题就在这一句上:
select convert(char(13),jltime) ,convert(char(13),jlreadnumber) ,convert(char(13),jldate)
原来是
select convert(char(13),jltime) AS JLTIME,convert(char(13),jlreadnumber) AS READNUMBER,convert(char(13),jldate) AS JLDATE

真是气死我了。


#6


我看了,呵呵俺不明白,写了那么多的sql语句就没用过select表达式+as的呀你后台挂的是什么数据库?非那样写吗,搞不懂你。