我在SQL Server 2005中的存储过程是这样的:传递日期时间变量到SQL Server存储过程在Visual Studio 2008
CREATE PROCEDURE [dbo].[REP_PayRange]
@StartDate datetime = NULL,
@EndDate datetime = NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT * FROM Payment WHERE PayTime BETWEEN @StartDate AND @EndDate
END
它执行我运行从SQL中的结果:
EXEC REP_PayRange '1 Jan 2012', '10 Jan 2012'
我遇到困难的地方是在Visual Studio中。
这里是我采取的步骤:
- 创建一个新的空白, “Web窗体”/ aspx文件中的选择
- 插入一个GridView
- 选择一个数据源的Visual Basic语言选择“数据库”
- 选择一个数据连接,我已经证实作品(用于SQL Server Native)
- “指定自定义SQL语句或存储过程”
- 选择“存储过程:”“REP_PayRange”
- 选择“参数来源:无”和默认值“2012 1月1日”的开始日期和“参数来源:无”和默认值“2012 01月10日”为结束日期
- 在测试查询页面上,点击“测试查询”,确保我的值是我上面指定的值,并且没有数据返回。如果我保存并在浏览器中预览它,GridView是空的。
我想使用此方法创建我的网页,以便稍后可以将我的参数源更改为日历而不是默认值。
提前感谢您的任何帮助或提示。
HI亚伦,感谢您的时间。我现在试着用你推荐的格式,它仍然在SQL中工作,但Visual Studio告诉我“字符串没有被识别为有效的DateTime”请参阅[这里](http://imgur.com/UQwMT)。 我之所以使用“之间”是为了提供一个简单的例子来说明如何重新创建问题。它仍然不能解释为什么它在SQL而不是Visual Studio中工作。 还有其他想法吗? – user1513425 2012-07-10 01:50:56
对不起,不知道,在我的生活中曾经没有用过那个参数值对话框。也许这种高兴的事情是期待周围的报价(例如''20100101''),或者它可能需要''yyyy-mm-dd''... – 2012-07-10 02:01:17
啊,我刚刚试过'yyyy-mm-dd'和visual studio将其作为有效输入接受,但SQL查询未返回任何结果。也许我必须学会如何以手动的方式做到这一点。有趣的是,如果您在Visual Studio中将其定义为自定义SQL语句(exec REP_PayRange'01 Jan 2012','Jan Jan 2012'),它将返回一个值,但不能使用便捷的参数源选择器。 – user1513425 2012-07-10 02:04:49