我在 Visual Studio 2013 中有一个具有以下签名的 SQLCLR 存储过程:
[SqlFunction(DataAccess = DataAccessKind.Read, SystemDataAccess = SystemDataAccessKind.Read)]
public static SqlString ExecSql2Json(SqlString sql)
或者我试过:
[SqlFunction(DataAccess = DataAccessKind.Read, SystemDataAccess = SystemDataAccessKind.Read)]
public static SqlChar ExecSql2Json(SqlChar sql)
无论哪种方式,参数和返回类型都定义为NVARCHAR(4000)
. 我希望他们是NVARCHAR(MAX)
。
我知道我可以手动编写自己的CREATE PROCEDURE
语句来进行精细控制。是否有任何选项可以更改 SQL Server 生成的部署 DDL,或者我是否只需要手动添加一个脚本来删除和读取具有正确签名的 UDF?
您需要
SqlFacet
为返回值指定一个。这与为SqlFacet
输入参数指定 a 相同,只是您在其前面加上前缀return:
对于
(max)
长度,MaxSize=-1
在SqlFacet
属性中使用,示例如下:为此 SQLCLR 函数生成的 T-SQL 脚本是: