为使用表值函数的选择查询更正参数类型
Posted
技术标签:
【中文标题】为使用表值函数的选择查询更正参数类型【英文标题】:Correct parameter types for select queries that use table valued functions 【发布时间】:2015-11-24 08:40:43 【问题描述】:My SQL Server 2012 包含一个函数Get_Schedule
:
CREATE FUNCTION Get_Schedule(
@pProject_Id AS INT,
@pPeriod_Start AS DATETIME2,
@pPeriod_End AS DATETIME2)
RETURNS TABLE
WITH SCHEMABINDING
AS
RETURN (
SELECT
42 AS Val1,
'Foo' AS Val2);
Visual Studio 2015 的 SQL Server 对象资源管理器显示具有定义类型的函数参数。
但是,当将函数拖到强类型数据集设计器时,DATETIME2
参数将更改为 ANSISTRING
,而不是 System.DateTime
或 System.Data.SqlDbType.DateTime2
。
int
参数,@pProject_Id
确实具有正确的类型。
在使用表适配器的 select 语句访问数据库和创建新的存储过程时都会发生这种情况(过程本身确实具有预期的 DATATIME2
作为参数,但生成的表适配器具有 ansistring
)。
如何在生成的表适配器中拥有正确的参数类型?
【问题讨论】:
【参考方案1】:添加查询及其表适配器后:
打开表适配器的属性; 展开SelectCommand
;并且,
将Parameters
编辑为正确的类型。
【讨论】:
对任何采用此方法(有效)的人发出警告 - 如果您随后更改查询,它将重新生成命令并将参数重置为默认值。以上是关于为使用表值函数的选择查询更正参数类型的主要内容,如果未能解决你的问题,请参考以下文章