【问题标题】:How do i debug CLR SQL Server User-Defined Function in .Net using visual studio?如何使用 Visual Studio 在 .Net 中调试 CLR SQL Server 用户定义函数?
【发布时间】:2012-06-25 15:18:49
【问题描述】:

我有一个项目,我在 test.cs 文件中有SqlServerFunctions。 代码:

    [Microsoft.SqlServer.Server.SqlFunction]
    public static SqlDecimal CalculateBondDV0N(SqlDecimal coupon, SqlDecimal yield, SqlDateTime date)
    {
        DayCount dayCount = (DayCount)Enum.Parse(typeof(DayCount), dayCountString.ToString(), true);
        Frequency frequency = (Frequency)Enum.Parse(typeof(Frequency), frequencyString.ToString(), true);

        double price = BondAnalyticsUtility.CalculateDV0N((double)coupon.Value, dayCount, frequency, (double)yield.Value, date.Value, finalPaymentDate.Value, (double)redemptionValue.Value, (double)notional.Value, (double)spreadChange.Value);

        SqlDecimal returnVal = new SqlDecimal(price);

        return returnVal;
    }

并且这个函数通过给EXTERNAL参数从标量值函数内部的Sql Server调用。

ALTER FUNCTION [dbo].[CalculateBondDV0N](@Coupon [decimal](18, 6), @Yield [decimal](18, 6), @Date [datetime])
RETURNS [decimal](18, 7) WITH EXECUTE AS CALLER
AS 
EXTERNAL NAME [Pearl.Analytics.Services.Database].[BondAnalytics].[CalculateBondDV0N]

我想调试这个函数,代码在 c# 中试图调试到 VS2010 pro 我怎样才能将它与数据库连接并做到这一点?

【问题讨论】:

    标签: .net sql sql-server sqlclr


    【解决方案1】:

    如果您不需要在 SQL Server 中调试它,那么很容易从普通 C# 代码中自然调用它。鉴于您的方法仅使用非常基本的类型,我看不出有任何理由需要在 SQL Server 中对其进行调试。

    但是,我不确定“dayCountString”和“frequencyString”是从哪里来的。我怀疑这些也应该是函数的参数。

    【讨论】:

    • 该方法的所有参数都是从 SQL 表中选择的,所以当我在 c# 中调用任何方法时,参数都来自 SQL 表
    • 那么,用相同的参数从C#调用它?
    猜你喜欢
    • 2013-09-27
    • 2010-11-06
    • 1970-01-01
    • 2012-09-16
    • 2012-08-14
    • 2015-05-21
    • 1970-01-01
    • 2011-05-31
    • 2015-07-19
    相关资源
    最近更新 更多