在CLR udfc#中循环遍历表
本文关键字:遍历 循环 CLR udfc# | 更新日期: 2023-09-27 18:05:15
我需要写一个CLR UDF从表中读取数据并通过它循环,但最重要的是将数据存储在双精度数组(表只有双精度值),之后我将使用数学库来计算一些东西…
我一直在搜索,但我发现连接到数据库的例子,我想用C# code
和从存储过程调用它。
我发现的一个例子是这样的,但如何将是步骤,使一个dll而不是连接到数据库,并存储数组中的双值?
using System;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;
using System.Text;
public partial class StoredProcedures
{
[Microsoft.SqlServer.Server.SqlProcedure]
public static void CLR_StoredProcedure3()
{
SqlConnection conn = new SqlConnection();
conn.ConnectionString = "Context Connection=true";
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
}
}
我认为最有效的方法是分两步完成:
int count;
using (SqlCommand cmdCount = conn.CreateCommand())
{
cmdCount.CommandText = "SELECT COUNT(*) FROM [MyTable]";
count = (int)cmdCount.ExecuteScalar();
}
// knowing the number of rows we can efficiently allocate the array
double[] values = new double[count];
using (SqlCommand cmdLoad = conn.CreateCommand())
{
cmdLoad.CommandText = "SELECT * FROM [MyTable]";
using(SqlDataReader reader = cmdLoad.ExecuteReader())
{
int col = reader.GetOrdinal("MyColumnName");
for(int i = 0; i < count && reader.Read(); i++)
{
values[i] = reader.GetDouble(col);
}
}
}
// do more processing on values[] here