今天学习了如何在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使用介绍,在sqlserver2008中有3中自定义函数:标量函数/内联表值函数/多语句表值函数,需要的朋友可以参考下
│ 精妙SQL语句收集_sql.sql │ ├─05 T-SQL编程 │ T-SQL.sql │ ├─06 视图 │ SysView.sql │ view.sql │ ├─07 事务 │ transaction.sql │ ├─08 存储过程 │ procudure.sql │ ├─09 索引 │ index...
execute immediate str_sql into tabtcn; --动态执行DDL语句
SQL基本语句使用示例 目录 --数据操作 2 --数据定义 2 --数据控制 2 --事务控制 2 --程序化SQL 2 ---局部变量 3 --IF ELSE 3 --CASE 3 --WHILE CONTINUE BREAK 3 --WAITFOR 4 ***SELECT*** 4 ***insert*** 5 ***...
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数据库软件...
1. ACID:指数据库事务正确执行的四个基本要素缩写:1....4.使用T-SQL语句创建数据库:CREATE DATABASE [ApressFinacial] ON PRIMARY ( NAME = N’ApressFinacial’, FILENAME = N’I:\Program Files\Microso
如何提高Transact-SQL语句的执行效率呢?如何加强数据库中数据完整性的机制呢?这些问题的解决都依赖于数据库的编程对象。典型的数据库编程对象包括视图、存储过程、触发器、函数等。视图在第10章已经讲过了,本章将...
使用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 判断字段值是否有中文 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=...
---数字转换汉字----RR--------------------- ALTER FUNCTION numToChinese(@str varchar(20)) RETURNS VARCHAR(20) AS BEGIN declare @i int, @n_str varchar(1),@data varchar(20)
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数据库软件组成 ...
注意事项: ... 2.只要是数据库操作必须引用 use/think/Db;严格区分大小写。... /****************tp5中使用原生语句*******************/ //query 用于查询 其他的用execute // 插入记录 // $result = Db::e
本文实例讲述了Laravel框架执行原生SQL语句及使用paginate分页的方法。分享给大家供大家参考,具体如下: 1、运行原生sql public function getList($data){ //获取前端传过来的参数 $user = $data['userId']; $...
用户自定义函数可以在企业管理器中创建,也可以使用CREATE FUNCTION 语句创建。在创建时需要注意:函数名在数据库中必须唯一,其可以有参数,也可以没有参数,其参数只能是输入参数,最多可以有1024参数。 标量函数...
在T-SQL中,用户变量以@符号开头,用于声明为特定的数据类型。可以使用SET或者SELECT语句给变量赋值。以下的例子用于将一个int类型的变量@MyNumber传递给SQRT()函数: DECLARE @MyNumber int SET @MyNumber=144 ...
打开测试数据库test,并以表w01为例,将下面的SQL语句放入sql2000查询分析器中,一段一段执行即可看到效果 ---在sql2000下创建测试数据表 if exists (select * from dbo.sysobjects where id = object_id(N'[dbo]....
SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name 3.举例说明 我们有这样一个订单表: 我们希望统计每一个用户订单的总金额,...
--使用ALTER TABLE 语句为已经创建的表添加主键约束、外键约束 --主键 ALTER TABLE Customer ADD CONSTRAINT PK_Customer PRIMARY KEY(CusNo) GO ALTER TABLE Product ADD CONSTRAINT PK_Product PRIMARY KEY...
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); --查询每个部门中工资最高的那个人 -----------------...
创建用户定义函数,它是返回值的已保存的 Transact-SQL 例程。用户定义函数不能用于执行一组修改全局数据库状态的操作。与系统函数一样,用户定义函数可以从查询中唤醒调用。也可以像存储过程一样,通过 EXECUTE ...