我正在尝试将现有的.dll文件映射到SQL Server,为此,我创建了一个程序集,然后使用create procedure
语法和external
关键字。
我们可以使用创建功能脚本来实现相同的功能吗?如果没有,请让我知道何时使用函数或存储过程来进行相同的操作。
create function ConvertToText
(@Resume varbinary(max))
return varchar(8000)
as external name Conversions.Sqlconversions.ConvertToText
create procedure ConvertToText
(@Resume varbinary(max))
as external name Conversions.Sqlconversions.ConvertToText
是否完全取决于是否存在相同的返回值?
取决于您如何装饰CLR程序集中的方法。
映射存储过程时,您将使用create procedure
,例如:
[Microsoft.SqlServer.Server.SqlProcedure]
public static int PriceSum(out SqlInt32 value)
{
//...
}
在映射用户定义的函数时,您将使用create function
,例如:
//Scalar User-Defined Function
[Microsoft.SqlServer.Server.SqlFunction(DataAccess = DataAccessKind.Read)]
public static int ReturnOrderCount()
{
return 1 + 47;
}
//Table-Valued User-Defined Function
[Microsoft.SqlServer.Server.SqlFunction(FillRowMethodName = "FillRow")]
public static IEnumerable FindInvalidEmails(SqlDateTime modifiedSince)
{
return Something_Something_IEnumerable;
}
参考: