sql-server - 函数与存储过程作为外部名称属性
问题描述
我正在尝试将现有的 .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;
}
参考:
推荐阅读
- ms-access - 识别缺少时间的日期时间戳
- java - 将数组值从 JPA/Hibernate 传递给 PostgreSQL
- c# - 有没有办法通过传入类型的字符串值来编写 FindElement 调用
- ios - 在运行时在 Unity 中请求 iOS 上的相机权限
- r - 如何根据其他数据框中的信息减去 R 数据框列?
- java - WireMock 超时
- bash - 配置 Kubernetes 以从私有注册表中提取图像时出错
- dataweave - 从有效载荷 Dateweave 中提取文件
- java - 在 Android 中短时间安排时间精确的任务
- python - 寻找最近邻的最终代码问题