PCB 周期计算采用 SQL函数调用.net Dll实现

PCB 周期计算采用 SQL函数调用.net Dll实现 (实现代码重用目的)

玩过SQL SERVER数据库经常经需要写存储过程,函数之类的,当业务逻辑过于复杂,用SQL去写简直是恶梦,

这里以PCB周期函数用.NET写好了,用MS SQL调用.net基本步骤整理一下如下

第1步:SQL服务器CLR配置(允许SQL调用.net程序),执行SQL命令

    sp_configure ‘show advanced options‘, 1;
    RECONFIGURE WITH override
    GO
    sp_configure ‘clr enabled‘, 1;
    RECONFIGURE WITH override
    GO    Sp_changedbowner ‘sa‘,true   --sa改为当前登入用户名

第2步:注册 CLR 程序集

   create  ASSEMBLY SQLfunctionAssembly
   FROM ‘D:\Program Files\SQLClr.dll‘      --改为自己C#写的dll路径填写
   WITH PERMISSION_SET = UNSAFE;   

创建的.net程序集会加载成功,数据会写入下表:

第3步:创建标量函数

    CREATE FUNCTION[dbo].[getWeek] (
    @CurrentDate datetime,
    @Format NVARCHAR(100),
    @AddDay int
    )
    RETURNS NVARCHAR(128)
    WITH EXECUTE AS CALLER
    AS
    EXTERNAL NAME [SQLfunctionAssembly].[SQLClr.SQLfunction].[getWeek]    --[SQL程序集名].[命名空间.类名].[方法名]

第4步:执行测试结果:

C#代码:

    public partial class SQLfunction
    {
/// <summary>
        /// 获取周期
        /// </summary>
        /// <param name="CurrentDate"></param>
        /// <param name="Format"></param>
        /// <param name="AddDay"></param>
        /// <returns></returns>
        [Microsoft.SqlServer.Server.SqlFunction(DataAccess = DataAccessKind.Read, IsDeterministic = true, Name = "getWeek")]
        public static SqlString getWeek(SqlDateTime CurrentDate,SqlString Format, SqlInt32 AddDay)
        {
            SqlString result = tool.getWeek(CurrentDate.Value, Format.Value, AddDay.Value);
            return result;
        }
}

具体可以参考(有详细说明):

https://www.cnblogs.com/Brambling/p/8000911.html

原文地址:https://www.cnblogs.com/pcbren/p/9218813.html

时间: 2024-10-22 05:56:45

PCB 周期计算采用 SQL函数调用.net Dll实现的相关文章

PCB 周期日历

在PCB行业一直以来没找到适合我们这行业的日历,主要存在2个差异导致. 1.周期差异:由于PCB 周期计算的复杂性,市面上无法找到符合PCB行业计算周期方式 (另一遍博文中有写周期计算逻辑) http://www.cnblogs.com/pcbren/p/9217218.html 2.星期差异:中国从星期一至星期日,   而国外是从星期日至星其六 一直以后心里存在一个未解的节,上星期开始写,断断续续码代码,今天终于得以实现了,后续准备挂到工程系统使用 实现功能 星期排列:周期采用,从星期一 到

Sql Server 调用DLL

原文:Sql Server 调用DLL 背景 在处理数据或者分析数据时,我们常常需要加入一定的逻辑,该些处理逻辑有些sql是可以支持,有些逻辑SQL则无能为力,在这种情况下,大多数人都会编写相关的程序来处理成自己想要的数据,但每次处理相同逻辑时,都需要运行一次程序非常麻烦. 案例 IE地址栏上的地址在记入日志表中时,其数据是通过编码的,如果我们想要看到明文,则需要相应的解码,可以用SQL语句来实现,如: 摘自:http://blog.csdn.net/ruijc/article/details/

PCB特征阻抗计算神器Polar SI9000安装及破解指南

近年来,IC集成度的提高和应用,其信号传输频率和速度越来越高,因而在印制板导线中,信号传输(发射)高到某一定值后,便会受到印制板导线本身的影响,从而导致传 输信号的严重失真或完全丧失.这表明,PCB导线所“流通”的“东西”并不是电流,而是方波讯号或脉冲在能量上的传输. 上述此种“讯号”传输时所受到的阻力,另称为“特性阻 抗”,代表符号为Z0. 所以,PCB导线上单解决“通”.“断”和“短路”的问题还不够,还要控制导线的特性阻抗问题.就是说,高速传输.高频讯号传输的传输线,在质量上要比传输导线严格

在SQL Server引用dll的流程

在SQL Server中引用dll分为两个步骤 1.创建一个dll文件 2.把dll文件放进SQL Server的程序集中.然后定义一个Function,就可以通过该Function来引用dll中的函数. 创建一个dll文件 1.点击“文件”->“新建”->“项目”->类库,把命名空间改成StringHelp,添加如下代码 namespace StringHelp //命名空间 { public class ClassConvert //类名 { //把输入的字符串中的小写字母变成大写字

PCB参数计算神器-Saturn PCB Design Toolkit下载及安装指南

进行PCB设计,特别是高频高速设计时,难免会涉及到PCB相关参数的计算及设置,如:VIA的过流能力,VIA的寄生电容.阻抗等,导线的载流能力,两相互耦合信号线间的串扰,波长等参数. 这里向大家介绍一款神器-Saturn PCB Design Toolkit,其能计算大部分常用的PCB相关的参数数据. 下载 猛击这里:Staturn PCB Design Toolkit 百度网盘 安装 此软件的安装过程相当简单,一路”NEXT”即可,实在是太没有成就感了…… 来点图片色诱一下 VIA参数计算 串扰

Vertica用于时间计算的SQL语句大全

That`s it. 我发现在网上Laravel的学习资料实在是太少了.好多东西需要自己去弄.去理解. 我的方法还有一个,就是去github上面下载老外写的Laravel网站,然后拿下来自己运行,分析代码,然后找出其中的出彩的地方.恩,很不错的方法.今天让我找到了一个好东西,就是Laravel 本地化语言的功能. 所谓本地化语言,就是说在不同的的国家可能使用不同的语言.那么如果没有适应各个语言的程序,也就意味着程序需要重写.现在Laravel提供了一个方便的功能,本地化语言支持. 好了,下面让我

安装SQL2008时遇到&quot;未能加载文件或&quot;file:///d:microsoft..sql.chainer.packagedata.dll&quot;或它的某个依赖项

安装SQL2008时遇到"未能加载文件或"file:///d:microsoft..sql.chainer.packagedata.dll"或它的某个依赖项,如下图所示 原因:SQL2008的安装路径过长. 解决:把SQL2008放到D盘或者E盘的根目录下再安装.

vue 524 (生命周期 计算属性 监听)

每个 Vue 实例在被创建时都要经过一系列的初始化过程--例如,需要设置数据监听.编译模板.将实例挂载到 DOM 并在数据变化时更新 DOM 等.同时在这个过程中也会运行一些叫做生命周期钩子的函数,这给了用户在不同阶段添加自己的代码的机会. 依据上表可以确定各个位置的先后触发顺序 //  关于计算属性: vue改变或获取一个内部方法有以下两种种. 1.在vue对象中 以  methods:{}模式定义各类成员方法: 例如(js  vue对象定义内): methods:{ FF1(){return

简化多层分组关联计算的sql

在数据库应用开发中,我们经常需要面对复杂的SQL式计算,比如多层分组中的关联计算.由于SQL分组时必须同时汇总,并且不能进行对象式关联访问,因此处理这类问题会比较复杂,只能用窗口函数嵌套多层的子查询的高级技巧来实现.集算器支持真正的分组,直观的对象式关联访问,解决这类问题更加容易. 分组关联在实际业务中遇到的较多,比如http://forums.bit-tech.net/showthread.php?t=207052.下面以链接中的实际业务为蓝本设计一个更通用的例子,用来说明集算器实现分组关联的