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执行语句 ...
随机推荐
- ASP POST请求
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- php将秒转换为 分:秒 函数
php将秒转换为 分:秒 函数 /** * 将秒转换为 分:秒 * s int 秒数 */ function s_to_hs($s=0){ //计算分钟 //算法:将秒数除以60,然后下舍入,既得到分 ...
- 【全面解禁!真正的Expression Blend实战开发技巧】第三章 从最常用ButtonStyle开始 - TextButton
原文:[全面解禁!真正的Expression Blend实战开发技巧]第三章 从最常用ButtonStyle开始 - TextButton 在实际项目中,使用blend做的最多的一定是各种自定义But ...
- Win8Metro(C#)数字图像处理--2.16图像浮雕效果
原文:Win8Metro(C#)数字图像处理--2.16图像浮雕效果 [函数名称] 图像浮雕效果函数ReliefProcess(WriteableBitmap src) [函数代码] ...
- UWP ListView
ListViewItem项填充整个宽度最大化<ListView.ItemContainerStyle> <Style TargetType="ListViewItem&qu ...
- 微信小程序把玩(二十二)action-sheet组件
原文:微信小程序把玩(二十二)action-sheet组件 action-sheet组件是从底部弹出可选菜单项,估计也是借鉴IOS的设计添加的,action-sheet有两个子组件, action-s ...
- MVC4升级MVC5导致原项目出错的解决方法
原文:MVC4升级MVC5导致原项目出错的解决方法 出现安全透明方法"WebMatrix.WebData.PreApplicationStartCode.Start()"尝试访问安 ...
- eval 未将对象引用到对象实例
1.Eval("No") == null ? "" : Convert.ToString(Eval("NO"))
- 事件循环和线程没有必然关系(就像Windows子线程默认没有消息循环一样),模态对话框和事件循环也没有必然关系(QWidget直接就可以)
周末天冷,索性把电脑抱到床上上网,这几天看了 dbzhang800 博客关于 Qt 事件循环的几篇 Blog,发现自己对 Qt 的事件循环有不少误解.从来只看到现象,这次借 dbzhang800 的博 ...
- ML:梯度下降(Gradient Descent)
现在我们有了假设函数和评价假设准确性的方法,现在我们需要确定假设函数中的参数了,这就是梯度下降(gradient descent)的用武之地. 梯度下降算法 不断重复以下步骤,直到收敛(repeat ...