SQL Server 函数的定义及使用
一、定义存储过程
当存储过程需要有返回值时,可以使用output关键字或return关键字。output和return不能同时使用
--定义
create procedure program
--@parameter int 定义参数
--@parameter int output 利用output关键字返回接口
as
begin
print '';
--return ''; 利用return关键字返回结构
end
--调用 execute 存储过程名 参数
execute program
--赋值的方式调用
declare @cc varchar(10)
execute @cc = program
二、定义函数
1. 标量值函数:
返回一个确定类型的标量值,例如:int,char,bit等
--创建标量值函数
create function func_1(@func_parameter_1 int,@func_parameter_2 int)
returns int
as
begin
return 1
end
2. 表值函数
内联表值函数和多语句表值函数,都叫做表值函数,只是在定义返回值时,多语句确定了返回表的字段
--内联表值函数
create function func_table(@parameter_id varchar(36))
returns table
as
return select ID,Name from Members where ID = @parameter_id
go
--多语句表值函数
create function func_table1(@parameter_id varchar(36))
returns @tab_1 table(
ID varchar(36),
Name varchar(10)
)
as
begin
insert into @tab_1 select ID,Name from Members
return
end
3.调用函数
在存储过程中调用函数时,需要带上“dbo.” 看看是那个数据库的。表值函数也可以用“insert into ……select ‘函数’ ”赋值给表变量或临时表等
-- 标量函数
declare @params varchar(100)
select @params = dbo.func_1(1,2);
-- 表值函数
select * from func_3('parameter_varchar');
select @params = Name from func_table('parameter_varchar');
三、触发器
--基本语法
create trigger Trigger_Name
on TableName for type --type:insert,update,delete
as
--执行逻辑
1. insert 定义触发器并获取当前值
create trigger Member_Inserts
on Member for insert
as
declare @id varchar(36)
select @id = id from inserted;
insert into Member(ID,Sex) values(@id+'insert',0);
2. update 触发器
update 触发器获取修改前的值和修改后的值。update操作等于先删除记录,再插入新的记录
create trigger Member_Updates
on Member for update
as
declare @idnew varchar(36);
declare @idold varchar(36);
select @idnew = id from inserted;--inserted在修改时存放的新值的临时表
select @idold = id from deleted;--deleted在修改时存放的旧值的临时表
insert into Member(ID,Sex) values(@idnew+'new',0);
insert into Member(ID,Sex) values(@idold+'old',0);
3.delete 触发器
create trigger Member_Deletes
on Members for delete
as
declare @idold varchar(36);
select @idold = id from deleted;--deleted在修改时存放的旧值的临时表
insert into Members(ID,CreateTime,Author,Status) values(NEWID(),GETDATE(),@idold,0)
SQL Server 函数的定义及使用的更多相关文章
- SQL SERVER 函数大全[转]
SQL Server 函数大全 一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果.这些要求包括:执行计算与数学运算.转换数据.解析数值.组合值和聚合一个范围内的值等. 下 ...
- Sql Server函数全解<五>之系统函数
原文:Sql Server函数全解<五>之系统函数 系统信息包括当前使用的数据库名称,主机名,系统错误消息以及用户名称等内容.使用SQL SERVER中的系统函数可以在需要的时候获取这些 ...
- sql server 函数的自定义
创建用户定义函数.这是一个已保存 Transact-SQL 或公共语言运行时 (CLR) 例程,该例程可返回一个值.用户定义函数不能用于执行修改数据库状态的操作.与系统函数一样,用户定义函数可从查询中 ...
- 【转载】SQL SERVER 函数大全
SQL Server 函数大全 一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果.这些要求包括:执行计算与数学运算.转换数据.解析数值.组合值和聚合一个范围内的值等. 下 ...
- Sql Server 函数的操作实例!(执行多条语句,返回Select查询后的临时表)
Sql Server 函数的操作实例!(执行多条语句,返回Select查询后的临时表) SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ==== ...
- Sql Server 函数的操作实例!(返回一条Select语句查询后的临时表)
Sql Server 函数的操作实例!(返回一条Select语句查询后的临时表) SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE FUN ...
- Sql Server函数全解<四>日期和时间函数
原文:Sql Server函数全解<四>日期和时间函数 日期和时间函数主要用来处理日期和时间值,本篇主要介绍各种日期和时间函数的功能和用法,一般的日期函数除了使用date类型的参数外, ...
- SQL Server函数---Union与Union All的区别
SQL Server函数---Union与Union All的区别 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字.union(或称 ...
- SQL Server 函数之日期格式化函数
SQL Server 函数之日期格式化函数 高文龙关注0人评论612人阅读2017-09-23 13:47:07 SQL Server 函数之日期格式化函数 对于一些经常写SQL Server执行语句 ...
随机推荐
- 深入浅出RPC——浅出篇 深入篇
本文转载自这里是原文 近几年的项目中,服务化和微服务化渐渐成为中大型分布式系统架构的主流方式,而 RPC 在其中扮演着关键的作用. 在平时的日常开发中我们都在隐式或显式的使用 RPC,一些刚入行的程序 ...
- SqlServer 更改复制代理配置文件参数及两种冲突策略设置
原文:SqlServer 更改复制代理配置文件参数及两种冲突策略设置 由于经常需要同步测试并更改代理配置文件属性,所以总结成脚本,方便测试. 可更新订阅的冲突策略有两种情况:一是在发布中冲突,即订阅数 ...
- 微信小程序把玩(六)模块化
原文:微信小程序把玩(六)模块化 模块化也就是将一些通用的东西抽出来放到一个文件中,通过module.exports去暴露接口.我们在最初新建项目时就有个util.js文件就是被模块化处理时间的 /* ...
- 基于VUE实现的新闻后台管理系统-二
基础环境及最后的开发效果已完成说明,接下来就开始配置. ¶npm初始化 新建项目文件夹VueDemo,在其内执行如下脚本 npm init -y 安装vue-cli构建包 yarn add vue-c ...
- win10 应用商店/相机/计算器误删后的修复方法
“以管理员身份运行”Windows Powershell. 然后在打开的“管理员:Windows Powershell”窗口中输入以下重装应用商店的命令: //商店恢复 Get-AppXPackage ...
- ThreadPoolExecutor的一点理解 专题
corePoolSize(maxActiveThreadSize):线程池大小,决定着新提交的任务是新开线程云执行还是放到任务队列中,也是线程池的最最核心的参数.一般线程池开始时是没有线程的,只有当任 ...
- uniDAC使用sqlite3作为 IOS APP 的数据库存在的问题
前面有写,可以利用uniConnection的ForceCreateDatabase参数,强制建立sqlite本地数据库, uniConnection1.SpecificOptions.Values[ ...
- Cookieless.js —— 无需 Cookie 实现访客跟踪
直击现场 https://github.com/Colex/node-cookieless Cookieless.js 是一个轻量级的使用 Etag 进行访客跟踪的 Node.js 扩展库.使用该库无 ...
- c# RedisHelper
使用redis组件如下,至于为什么使用3.9版本,是因为4.0开始商业了,限制了次数 ServiceStack.Common" version="3.9.70"Servi ...
- IT安全军火库-转
全球有260万信息安全专业人士,渗透测试工具是他们“安全军火库”中最常使用的装备,但直到最近,可用的渗透测试工具才丰富起来,但这也带来一个问题,挑选合适的渗透测试工具成了一件麻烦事,一个最简单的方法就 ...