我拥有的是一个SqlFunction生成 3 个双精度数组的CLR 。我希望这个函数返回一些适当的东西,以便FillRowMethod可以将它作为 T-SQL 中的表输出给我。它适用于 1 个数组,但我无法将其扩展到多个数组。我主要不确定从我的方法返回什么。下面的一些代码:
[SqlFunction(DataAccess = DataAccessKind.Read, FillRowMethodName = "FillRow",
TableDefinition = "impliedVol float, maturity float, strike float")]
public static IEnumerable getStrippedCapletVolatilitiesFromCapVolatilityCurve(
string uploadDate, double strike, double yearsForward, double intervalDuration,
string curve, string surface)
//Create 3 arrays of doubles
double[] array1;
double[] array2;
double[] array3;
return [???];
}
public static void FillRow(object obj,
out SqlDouble impliedVol, out SqlDouble maturity, out SqlDouble strike)
{
//impliedVol = (double)obj; //This is what I do if …Run Code Online (Sandbox Code Playgroud) 我正在尝试进行以下工作:
WITH results(n, string ) AS (
SELECT 1,'lol'
UNION ALL
SELECT n+1, string + ' lol'
FROM results
WHERE n<6
)
SELECT * FROM results
Run Code Online (Sandbox Code Playgroud)
但是 SQL 似乎无法识别第二列中的字符串连接并返回错误:
递归查询“结果”的“字符串”列中的锚点和递归部分之间的类型不匹配。
我想要的输出是这样的
1、哈哈
2、哈哈哈哈哈
3、哈哈哈哈哈
等等