1、在C#中调用sql自定义函数

1.1 标量值函数

sql语句调用 select  dbo.GetClassIDWithName(1)

string strSql = string.Format("select dbo.GetClassIDWithName('{0}')",dtTime);
DataTable dt = DB_Contrast.DB.OleDbHelper.GetDataTable(strSql);

1.2 表值函数

sql语句调用 select * from GetAnalysis('2015-1-15',1)

string strSql = string.Format("select * from dbo.GetAnalysis('{0}',{1}) where 部门='{2}' ",dtTime, classid,"开发");
DataSet ds = DB_Contrast.DB.OleDbHelper.GetDataSet(strSql);

2、表值函数,

内层select获取不重复的记录

外层按照部门进行分组

USE [BW_Contrast]
GO
/****** Object: UserDefinedFunction [dbo].[GetAnalysis] Script Date: 01/15/2015 13:09:17 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[GetAnalysis]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[GetAnalysis]
GO /****** Object: UserDefinedFunction [dbo].[GetAnalysis] Script Date: 01/15/2015 13:09:17 ******/
SET ANSI_NULLS ON
GO SET QUOTED_IDENTIFIER ON
GO
/*
-----------------------------------------------------------------------------
《根据入井时间获取相应的班次ID》
-----------------------------------------------------------------------------
参数:
   1、@classdate 班次日期 2、@classid 班次ID 返回值:table
-----------------------------------------------------------------------------
Written by
-----------------------------------------------------------------------------
*/ CREATE function [dbo].[GetAnalysis](@classdate datetime,@classid int)
returns table as
return (
--declare @classdate datetime,@classid int
--set @classid=2
--set @classdate='2015-1-14'
select
case when(grouping(a.部门)=1) then '合计' else a.部门 end as 部门
,(select top 1 ID from dbo.v_Dept where 部门名称=a.部门) as deptid
,Sum(case when dt_RealTime is not null and myclassid=@classid then 1 else 0 end ) as 派班人数
,Sum(case when dt_GetTime is not null and myclassid=@classid then 1 else 0 end ) as 领灯人数
,Sum(case when dtInWellTime is not null and myclassid=@classid then 1 else 0 end ) as 下井人数
,Sum(case when dt_OutWellTime is not null and myclassid=@classid then 1 else 0 end ) as 上井人数
,Sum(case when dt_ReturnTime is not null and myclassid=@classid then 1 else 0 end ) as 还灯人数
from
(
select
部门,deptid,myclassdate,myclassid,mypersonid
,min(dt_RealTime) as dt_RealTime
,min(dt_GetTime) as dt_GetTime
,min(dtInWellTime) as dtInWellTime
,min(dt_OutWellTime) as dt_OutWellTime
,min(dt_ReturnTime) as dt_ReturnTime
from v_ALL_NEW
where myclassdate=@classdate and myclassid=@classid
group by 部门,myclassdate,myclassid,mypersonid,deptid
)a
where myclassdate=@classdate and myclassid=@classid and 部门 is not null
group by 部门
with rollup
) GO

3、标量值函数

USE [BW_Contrast]
GO /****** Object: UserDefinedFunction [dbo].[GetClassIDWithName] Script Date: 01/15/2015 14:31:39 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[GetClassIDWithName]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [dbo].[GetClassIDWithName]
GO USE [BW_Contrast]
GO /****** Object: UserDefinedFunction [dbo].[GetClassIDWithName] Script Date: 01/15/2015 14:31:39 ******/
SET ANSI_NULLS ON
GO SET QUOTED_IDENTIFIER ON
GO /*
-----------------------------------------------------------------------------
《根据入井时间获取相应的班次ID》
-----------------------------------------------------------------------------
参数:
   1.@InWellTime 入井时间 返回值:int型 班次ID
-----------------------------------------------------------------------------
Written by
-----------------------------------------------------------------------------
*/
create function [dbo].[GetClassIDWithName](@InWellTime varchar(50))
returns int as
begin
declare @returnValue int
set @returnValue=0
select @returnValue=classID from v_Class where 时间段名称 =@InWellTime
return @returnValue
end GO

sql自定义函数及C#中调用的更多相关文章

  1. SQL自定义函数split分隔字符串

    SQL自定义函数split分隔字符串 一.F_Split:分割字符串拆分为数据表 Create FUNCTION [dbo].[F_Split] ( @SplitString nvarchar(max ...

  2. MS SQL自定义函数IsPositiveInteger MS SQL自定义函数IsNumeric 水晶报表使用IEnumerable<T>数据源

    MS SQL自定义函数IsPositiveInteger   判断字符串是否为正整数,0开始的的数字不算. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON ...

  3. Spark SQL 自定义函数类型

    Spark SQL 自定义函数类型 一.spark读取数据 二.自定义函数结构 三.附上长长的各种pom 一.spark读取数据 前段时间一直在研究GeoMesa下的Spark JTS,Spark J ...

  4. PL/SQL自定义函数

    从SQL表达式中调用函数的限制 为了从SQL表达式中调用函数,一个用户定义函数必须: 是存储函数 只接受IN函数 只接收有受的SQL数据类型,而不接受PL/SQL数据类型 返回数据类型为有效的SQL数 ...

  5. sql 自定义函数--固定格式字符转时间类型

    遇到一个德国的客户,他们的时间格式是JJJJ-TT-DD HH:MM:SS,程序按照这个格式将时间插入数据库,但是在sql自带的转换函数convert.cast过程中报错,网上搜了下都说用conver ...

  6. sqlserver自定义函数的创建与调用

    sqlserver中有系统提供的函数,像avg.sum.getdate()等,用户还可以自定义函数. 用户自定义的函数包括:标量函数和表值函数,其中标量函数和系统函数的用法一样,表值函数根据主体的定义 ...

  7. c++纯虚函数在父类中调用的规避

    构造和析构函数不允许调用纯虚函数,可以先调用虚函数,里面再调用纯虚函数实现. class Base{public:    virtual void foo()=0;    Base() { call_ ...

  8. SQL自定义函数

    1,自定义函数--返回单一值 CREATE FUNCTION [dbo].[Round2] ( -- Add the parameters for the function here @p1 sql_ ...

  9. 在自定义的dwt文件中调用page_header.lbi和page_footer.lbi

    昨天下午接到需求说要增加一个新的页面,作为优惠活动规则的介绍之用,之前对ecshop各种修改,但是这次自己做页面还是第一次,文件太多,函数也太多,一个一个的读过来时间很头疼的事情,于是就参照goods ...

随机推荐

  1. cloudflare 301 重定向设置

    https://support.cloudflare.com/hc/en-us/articles/218411427#redirects 将 https://dfg.com/* 设置301重定向到 h ...

  2. AC日记——Valued Keys codeforces 801B

    801B - Valued Keys 思路: 水题... 来,上代码: #include <cstdio> #include <cstring> #include <io ...

  3. J.U.C并发框架源码阅读(十五)CopyOnWriteArrayList

    基于版本jdk1.7.0_80 java.util.concurrent.CopyOnWriteArrayList 代码如下 /* * Copyright (c) 2003, 2011, Oracle ...

  4. servlet多线程同步问题

    Servlet/JSP技术和ASP.PHP等相比,由于其多线程运行而具有很高的执行效率.•由于Servlet/JSP默认是以多线程模式执行的,所以,在编写代码时需要非常细致地考虑多线程的同步问题.•如 ...

  5. hdu5884(多叉哈夫曼树)

    hdu5884 题意 给出 n 个数,每次选择不超过 k 个数合并(删掉这些数,加入这些数的和),花费为合并的这些数的和,要求最后只剩下一个数,问 k 最小取多少. 分析 二分 k,合并数的时候可以按 ...

  6. Jmeter正则表达式提取器--将上一个请求的结果作为下一个请求的参数

    正则表达式提取器是一个后置处理器,作用是在请求完成后,从响应数据中截取一部分字符串保存到变量中,以便下一个请求使用 1.首先在线程组下添加两个HTTP请求, 2.添加好两个HTTP请求后,在每个HTT ...

  7. ORA-17129=SQL 字符串不是DML 语句

    ORA-17129=SQL 字符串不是DML 语句 oracle这个错误的意思是 select 不可以算DML 数据操纵语言(Data Manipulation Language, DML)是SQL语 ...

  8. C语言基础之指针

    1.指针的定义 格式:变量类型 *变量名; 1: // 定义了一个指针变量p 2: // 指针变量只能存储地址 3: // 指针就一个作用:能够根据一个地址值,访问对应的存储空间 4: // 指针变量 ...

  9. 如何避免CSS :before、:after 中文乱码

    问题: 在进行页面开发时,经常会使用:before, :after伪元素创建一些小tips,但是在:before或:after的content属性使用中文的话,会导致某些浏览器上出现乱码. 解决方案: ...

  10. Android kernel Crash后,定位出错点的方法

    转载:http://blog.csdn.net/wlwl0071986/article/details/11635749 1. 将/prebuild/gcc/linux-x86/arm/arm-lin ...