2

我正在从事一个项目,我无法控制我被要求使用的产品版本。

我正在构建一个 ASP.NET 用户控件。SqlDataSource通过针对 Firebired 2.0 数据库的控件检索数据。一切都很好,直到我需要SqlDataSource通过存储过程而不是SELECT语句来填充其中一个控件。

我已验证该过程正在为 Interbase 和 Firebird 的 EMS SQL 管理器返回数据。但是,当我将SqlDataSource'SelectCommand属性设置为EXECUTE PROCEDURE myProc并调用Select()时,我没有得到任何数据。

我的程序没有输入参数,所以在我看来它应该是直截了当的。

实际情况是,SELECT如果我能够移动到 2.1,我可以使用一个简单的语句,因为我可以访问List()聚合函数,但这是不可能的。

有没有人有尝试这样做的经验?过程调用是否需要以任何方式修改?任何帮助将不胜感激。

4

2 回答 2

0

如果它是可选择的存储过程(其中有SUSPEND命令),那么你应该用SELECT语句调用它,而不是用EXECUTE PROCEDURE语句。所以设置SelectCommand

SELECT * FROM spName

它应该可以工作。

于 2013-05-17T14:17:51.707 回答
0

我通常会这样做(针对 SQL Server):

// set the SqlDataSource's SelectCommand to the *name* of the stored procedure
myDataSource.SelectCommand = "myProc";

// tell the SqlDataSource that this is a *stored procedure* now
myDataSource.SelectCommandType = CommandType.StoredProcedure;

由于您的存储过程根本不接受输入参数,所以这应该是全部!

使用 SQL Server,选择数据在此设置下工作得很好。

于 2013-05-17T14:14:56.577 回答