`

使用T-SQL语句创建Function

阅读更多
今天学习了如何在SQLServer中,通过脚本创建Function,以下是今天练习的Demo脚本

/*
	自动生成的脚本
*/

USE forums
GO

CREATE TABLE EMPLOYEE_DUPLICATE
(
	ID INT IDENTITY(1,1) PRIMARY KEY,
	EMP_NAME NVARCHAR(40) NOT NULL,
	EMP_TEL NVARCHAR(20) NOT NULL,
	EMP_PROVINCE NVARCHAR(20) NOT NULL,
	EMP_COUNTRY NVARCHAR(20) NOT NULL
)
GO
//将一个表中的数据复制到刚才新建的表中
INSERT INTO 
    EMPLOYEE_DUPLICATE(EMP_NAME,EMP_TEL,EMP_PROVINCE,EMP_COUNTRY)
        SELECT EMP_NAME,EMP_TEL,EMP_CITY,EMP_COUNTRY FROM EMPLOYEE

/**
	注意:题外话,如果要跨数据库
             (前提是当前用户中可以操作那个数据库)
              复制数据,则以下语句似乎可以搞定
	INSERT INTO DataBase_1_Name.dbo.EMPLOYEE_DUPLICATE

                 (EMP_NAME,EMP_TEL,EMP_PROVINCE,EMP_COUNTRY)

	SELECT EMP_NAME,EMP_TEL,EMP_CITY,EMP_COUNTRY FROM

        DataBase_2_Name.dbo.EMPLOYEE
**/

SELECT * FROM EMPLOYEE_DUPLICATE

/*
	创建带参数&返回值的函数
*/
IF EXISTS (SELECT * FROM sysobjects WHERE NAME = 'getResultById')
	DROP FUNCTION getResultById
CREATE FUNCTION getResultById (@id INT)
	RETURNS TABLE
AS
	RETURN 
	(
		SELECT EMP_NAME, EMP_TEL,EMP_PROVINCE,EMP_COUNTRY
                   FROM EMPLOYEE_DUPLICATE 
                       WHERE ID = @id
	)

//调用该函数
SELECT * FROM getResultById(2)
/*
	*Results Listing
	1	Tom	13011041125	NewYork	USA
	2	James	13000145296	ShanXi	China
	3	Harry	13103452845	ShanDong	China
	4	Jessica	13429990000	ShanXi	China
	5	Larry	0421-2909090	Yuta	USA
	6	Jakeboo	0911-2657999	ShanDong	China
	7	Vencent	010-28129588	BeiJing	China
*/

IF EXISTS(SELECT * FROM SYSOBJECTS WHERE NAME = 'getIdsByProvince')
	DROP FUNCTION getIdsByProvince

CREATE FUNCTION getIdsByProvince(@province NVARCHAR(50))
	//注意:一定是RETURNS,不是RETURN ! !
	//另外:似乎只可以将返回类型设置为TABLE
	//没有什么BEGIN...END...GO之类的东东
	RETURNS TABLE
AS
	RETURN
	(
		SELECT ID FROM EMPLOYEE_DUPLICATE
                       WHERE EMP_PROVINCE = @province
	)

SELECT * FROM EMPLOYEE

//查询在EMPLOYEE表中过滤重复之后的EMP_CITY以及重复EMP_CITY的计数
SELECT DISTINCT(EMP_PROVINCE),
       COUNT(EMP_PROVINCE) 
          FROM EMPLOYEE_DUPLICATE
          GROUP BY EMP_PROVINCE

//调用该函数,传入CITY,然后返回相应的ID,再根据ID查询出EMPLOYEE表中的记录
SELECT * FROM EMPLOYEE
    WHERE
      ID IN (SELECT ID FROM getIdsByProvince('ShanXi'))



以上就是新建FUNCTION的脚本了,创建数据库之后,就可以直接运行了!

欢迎拍砖!
分享到:
评论

相关推荐

    Sqlserver 自定义函数 Function使用介绍

    主要介绍了Sqlserver 自定义函数 Function使用介绍,在sqlserver2008中有3中自定义函数:标量函数/内联表值函数/多语句表值函数,需要的朋友可以参考下

    SQLServer2005数据库学习笔记

    │ 精妙SQL语句收集_sql.sql │ ├─05 T-SQL编程 │ T-SQL.sql │ ├─06 视图 │ SysView.sql │ view.sql │ ├─07 事务 │ transaction.sql │ ├─08 存储过程 │ procudure.sql │ ├─09 索引 │ index...

    oracle-function-执行动态sql

    execute immediate str_sql into tabtcn; --动态执行DDL语句

    SQL语句大全

    SQL基本语句使用示例 目录 --数据操作 2 --数据定义 2 --数据控制 2 --事务控制 2 --程序化SQL 2 ---局部变量 3 --IF ELSE 3 --CASE 3 --WHILE CONTINUE BREAK 3 --WAITFOR 4 ***SELECT*** 4 ***insert*** 5 ***...

    精通SQL--结构化查询语言详解

    2.1.3 使用查询分析器执行sql语句 22 2.2 transact-sql 24 2.2.1 transact-sql 概述 24 2.2.2 transact-sql的主要组成 25 2.2.3 transact-sql的一些重要命令 26 2.3 oracle数据库 29 2.3.1 oracle数据库软件...

    SQL Server 2005基础知识详细整理

    1. ACID:指数据库事务正确执行的四个基本要素缩写:1....4.使用T-SQL语句创建数据库:CREATE DATABASE [ApressFinacial] ON PRIMARY ( NAME = N’ApressFinacial’, FILENAME = N’I:\Program Files\Microso

    SQLServer2008数据库基础入门教程含思考题练习题 第11章 存储过程 触发器和函数 共62页.ppt

    如何提高Transact-SQL语句的执行效率呢?如何加强数据库中数据完整性的机制呢?这些问题的解决都依赖于数据库的编程对象。典型的数据库编程对象包括视图、存储过程、触发器、函数等。视图在第10章已经讲过了,本章将...

    SQL21日自学通

    使用SQL 来生成SQL 语句的目的351 几个SQL*PLUS 命令352 SET ECHO ON/OFF353 SET FEEDBACK ON/OFF353 SET HEADING ON/OFF 353 SPOOL FILENAME/OFF353 START FILENAME354 ED FILENAME354 计算所有的表中的行数354 为...

    SQL Server 提取数字、提取英文、提取中文的sql语句

    --SQL 判断字段值是否有中文 create function fun_getCN(@str nvarchar(4000)) returns nvarchar(4000) as begin declare @word nchar(1),@CN nvarchar(4000) set @CN='' while len(@str)>0 begin set @word=...

    sql 数字转换汉字fuction

    ---数字转换汉字----RR--------------------- ALTER FUNCTION numToChinese(@str varchar(20)) RETURNS VARCHAR(20) AS BEGIN declare @i int, @n_str varchar(1),@data varchar(20)

    精通SQL 结构化查询语言详解

    2.1.3 使用查询分析器执行SQL语句  2.2 Transact-SQL  2.2.1 Transact-SQL 概述  2.2.2 Transact-SQL的主要组成  2.2.3 Transact-SQL的一些重要命令  2.3 Oracle数据库  2.3.1 Oracle数据库软件组成 ...

    PHP tp5中使用原生sql查询代码实例

    注意事项: ... 2.只要是数据库操作必须引用 use/think/Db;严格区分大小写。... /****************tp5中使用原生语句*******************/ //query 用于查询 其他的用execute // 插入记录 // $result = Db::e

    Laravel框架执行原生SQL语句及使用paginate分页的方法

    本文实例讲述了Laravel框架执行原生SQL语句及使用paginate分页的方法。分享给大家供大家参考,具体如下: 1、运行原生sql public function getList($data){ //获取前端传过来的参数 $user = $data['userId']; $...

    sql server 自定义函数

    用户自定义函数可以在企业管理器中创建,也可以使用CREATE FUNCTION 语句创建。在创建时需要注意:函数名在数据库中必须唯一,其可以有参数,也可以没有参数,其参数只能是输入参数,最多可以有1024参数。 标量函数...

    sql server函数大全(精析)

    在T-SQL中,用户变量以@符号开头,用于声明为特定的数据类型。可以使用SET或者SELECT语句给变量赋值。以下的例子用于将一个int类型的变量@MyNumber传递给SQRT()函数: DECLARE @MyNumber int SET @MyNumber=144 ...

    sqlserver自定义函数

    打开测试数据库test,并以表w01为例,将下面的SQL语句放入sql2000查询分析器中,一段一段执行即可看到效果 ---在sql2000下创建测试数据表 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo]....

    简单讲解sql语句中的group by的使用方法

    SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name 3.举例说明 我们有这样一个订单表:   我们希望统计每一个用户订单的总金额,...

    SQL sever 实训

    --使用ALTER TABLE 语句为已经创建的表添加主键约束、外键约束 --主键 ALTER TABLE Customer ADD CONSTRAINT PK_Customer PRIMARY KEY(CusNo) GO ALTER TABLE Product ADD CONSTRAINT PK_Product PRIMARY KEY...

    精髓Oralcle讲课笔记

    61、select ename, sal from emp join (select max(sal) max_sal ,deptno from emp group by deptno) t on (emp.sal = t.max_sal and emp.deptno=t.deptno); --查询每个部门中工资最高的那个人 -----------------...

    CREATE FUNCTION sqlserver用户定义函数

    创建用户定义函数,它是返回值的已保存的 Transact-SQL 例程。用户定义函数不能用于执行一组修改全局数据库状态的操作。与系统函数一样,用户定义函数可以从查询中唤醒调用。也可以像存储过程一样,通过 EXECUTE ...

Global site tag (gtag.js) - Google Analytics