标题:存储过程调用的问题
只看楼主
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
结帖率:87.93%
 问题点数:0 回复次数:4 
存储过程调用的问题
在查询分析器中执行存储过程能正确返回数据,但是在前台调用的时候无法返回数据
--------------------
存储过程部分代码如下:
CREATE  Procedure BuildTimeRecords(......)
AS

CREATE TABLE [#TimeRecords] (
        [emp_id] [nvarchar] (12) COLLATE Chinese_PRC_CI_AS NULL ,
        [Clock_id] [nvarchar] (2) COLLATE Chinese_PRC_CI_AS NULL ,
        [CurrentDay] [datetime] NULL,
        [Card_id] [nvarchar] (16) COLLATE Chinese_PRC_CI_AS NOT NULL ,
        [flag] [tinyint] NULL ,
        [mark] [varchar] (2) COLLATE Chinese_PRC_CI_AS NULL ,
        [sign_time] [datetime] NULL ,
        [pass_kind] [varchar] (1) COLLATE Chinese_PRC_CI_AS NOT NULL
)

.......................

IF @ReturnType=0
  .......
ELSE
  BEGIN
        
        SELECT #TimeRecords.emp_id,employee.emp_fname,#TimeRecords.CurrentDay,a.cu,
               MAX(CASE mark WHEN 0 THEN   CONVERT (VARCHAR(8),sign_time,108)  END) AS [0],
               MAX(CASE mark WHEN 1 THEN   CONVERT (VARCHAR(8),sign_time,108)  END) AS [1],
               MAX(CASE mark WHEN 2 THEN   CONVERT (VARCHAR(8),sign_time,108)  END) AS [2],
               MAX(CASE mark WHEN 3 THEN   CONVERT (VARCHAR(8),sign_time,108)  END) AS [3],
               MAX(CASE mark WHEN 4 THEN   CONVERT (VARCHAR(8),sign_time,108)  END) AS [4],
               MAX(CASE mark WHEN 5 THEN   CONVERT (VARCHAR(8),sign_time,108)  END) AS [5],
               MAX(CASE mark WHEN 6 THEN   CONVERT (VARCHAR(8),sign_time,108)  END) AS [6],
               MAX(CASE mark WHEN 7 THEN   CONVERT (VARCHAR(8),sign_time,108)  END) AS [7],
               MAX(CASE mark WHEN 8 THEN   CONVERT (VARCHAR(8),sign_time,108)  END) AS [8],
               MAX(CASE mark WHEN 9 THEN   CONVERT (VARCHAR(8),sign_time,108)  END) AS [9],
               pass_kind
        FROM #TimeRecords
             INNER JOIN (SELECT emp_id,CurrentDay,Count(*) cu FROM #TimeRecords
                         GROUP BY emp_id,CurrentDay ) a
             ON a.emp_id=#TimeRecords.emp_id AND #TimeRecords.CurrentDay=a.CurrentDay
             INNER JOIN employee ON #TimeRecords.emp_id=employee.emp_id
        GROUP BY #TimeRecords.emp_id,#TimeRecords.CurrentDay,#TimeRecords.pass_kind,a.cu,employee.emp_fname
        ORDER BY #TimeRecords.emp_id,#TimeRecords.CurrentDay
  END
  Drop Table #TimeRecords
GO
--------------------------
按照以前遇到的情况 是因为没有删除临时表造成的 现在加了删除临时表 但问题仍照旧
2008-11-07 13:38
西风独自凉
Rank: 8Rank: 8
等 级:贵宾
威 望:43
帖 子:3380
专家分:28
注 册:2007-8-2
得分:0 
使用rs 得到其記錄

2008-11-07 13:50
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
得分:0 
[bo][un]西风独自凉[/un] 在 2008-11-7 13:50 的发言:[/bo]

使用rs 得到其記錄

你是说使用RecordSet吗 就是使用了这个也没有得到数据
2008-11-07 14:05
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
得分:0 
找到解决的办法了 很久前就遇到过 但是忘记了
"在ADO中调用存储过程时,一定要在存储过程的第一行加上set   nocount   on,如果在存储过程中使用了EXEC   sp_executesql   @sql则@sql这个字符串也必须在开头加上set   nocount   on.
set   nocount   on   的作用是禁止回显,当使用ado时该回显会被认为是错误(但并不抛出异常),所以导致recordset对象被关闭."
2008-11-07 14:26
西风独自凉
Rank: 8Rank: 8
等 级:贵宾
威 望:43
帖 子:3380
专家分:28
注 册:2007-8-2
得分:0 

2008-11-07 15:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-242902-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.117578 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved