【问题标题】:SQL stored procedure returning few rows as errorsSQL 存储过程返回几行错误
【发布时间】:2015-09-06 23:17:05
【问题描述】:

我正在尝试使用 SQL 存储过程返回表中的所有行。然后使用 C# 将结果存储在 DataTable 中。

在通过 EXEC 命令执行存储过程时,在 SQL 环境中得到了预期的结果。但是当值被存储在 DataTable 中时,只有几行显示错误,而其他行显示一些数据。

存储过程如下:

ALTER PROCEDURE procDDSDDAReg (@v_querytype VARCHAR(20), @v_Itemindex  INT)
AS 
BEGIN
 IF @v_querytype = 'SELECT_REQUEST'
  BEGIN 
        SELECT * FROM  DDSInternetBankingDDADetails o
        WHERE isnull(o.uploadstatus,'N') = 'N' AND o.InstructionCode='RQST';
  END; 
ELSE IF  @v_querytype = 'UPDATE' 
  BEGIN
   UPDATE DDSInternetBankingDDADetails SET uploadstatus ='Y' WHERE  Itemindex=@v_Itemindex 
  END; 
  

ELSE IF  @v_querytype = 'UPDATE_ROLLBACK' 
  BEGIN
   UPDATE DDSInternetBankingDDADetails SET uploadstatus ='N' WHERE  Itemindex=@v_Itemindex 
  END; 
   
 END;
GO

DataTable 的快照是:

C# 代码的快照是:

虽然没有抛出错误。请告诉我可能的原因。

【问题讨论】:

  • 您的数据库有一些限制,而您的 sql 表没有。可能是不应该存在的唯一约束或不可为空的列。
  • 这是 SQL Server 吗?请标记使用的 dbms 产品!
  • 是SqlDbx 3.60版(个人版)
  • @ZoharPeled 我没听懂你。请详细说明。
  • 你的 c# DataTable 是如何创建的?

标签: c# sql stored-procedures datatable


【解决方案1】:

难以置信,这是 VS2008 数据可视化器中的一个错误。

Quickwatch 在行和列属性上显示所有行中的实际值,但使用起来显然要繁琐得多。

【讨论】:

  • 是的,事实上,我努力了好几个小时来解决这个错误,以为以后会抛出异常。但是当我在 web 上找不到解决方案时,我继续执行,并惊讶地发现 Rows 和 Columns 属性显示出明显的价值,并且程序继续运行,没有抛出任何异常。
猜你喜欢
  • 1970-01-01
  • 2015-05-17
  • 2014-05-15
  • 2017-03-16
  • 1970-01-01
  • 1970-01-01
  • 2017-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多