小编Osc*_*car的帖子

如何在 C# SQLCLR 函数中将多个双精度数组作为表返回

我拥有的是一个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)

sql-server c# sql-clr set-returning-functions

6
推荐指数
1
解决办法
287
查看次数

递归 CTE 中的字符串操作

我正在尝试进行以下工作:

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、哈哈哈哈哈

等等

sql-server cte recursive

6
推荐指数
1
解决办法
255
查看次数