SQL存储过程触发器语句汇总
来源:互联网 发布:地府淘宝商txt下载八零 编辑:程序博客网 时间:2024/05/17 22:14
1、取表中数据保存到变量
8、取表记录关键字段最大值的方法:(陈斌写)
方法一:set 变量=(select 字段 from 表 where ) 注:select语句必须加().
方法二:select 变量1=字段1,变量2=字段2,... from 表 where .
2、变量赋值
错误:set @Dsp1='1',@Dsp2='2'
正确:select @Dsp3='3',@Dsp4='4'
3、数据类型转换
时间类型转字符:convert(varchar(8),getdate(),108) --12:12:34
convert(varchar(10),dBrushDT,112) --20120819
convert(varchar(19),GETDATE(),120) --2012-09-21 19:44:11
数字类型转字符:cast(数字 as varchar(10))
字符转数字:cast('3.34' as decimal(9,1))
4、NUll值判断
变量判断:IF @变量 is null or @变量=0
SQL语句:WHERE COLUMN_NAME IS NULL
ISNULL函数:ISNULL(变量/字段,'为空的时默认值')
5、两个字符串时间之间的差
DATEDIFF(ss, convert(datetime,'2012-09-21 01:26:50',120), convert(datetime,'2012-09-21 01:27:54',120))
以10分钟为单位时间取整
DATEADD(mi,DATEDIFF(mi,convert(datetime,convert(varchar(10),getdate(),120),120),getdate())/10*10,convert(datetime,convert(varchar(10),getdate(),120),120))
时间转换
SELECT
CAST('2007-05-08 12:35:29. 1234567 +12:15' AS time(7)) AS 'time'
,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS date) AS 'date'
,CAST('2007-05-08 12:35:29.123' AS smalldatetime) AS
'smalldatetime'
,CAST('2007-05-08 12:35:29.123' AS datetime) AS 'datetime'
,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS datetime2(7)) AS
'datetime2'
,CAST('2007-05-08 12:35:29.1234567 +12:15' AS datetimeoffset(7)) AS
'datetimeoffset';
6、存储过程加密 WITH ENCRYPTION
在AS前面可以加 [ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]
[ FOR REPLICATION ]
使用 ENCRYPTION 选项创建的存储过程不能使用 sp_helptext 查看。
7、分解用逗号分的字符串
declare @_str varchar(100),
@_i int,
@_a varchar(100)
set @_str=',,,abc,de fg, , ,,hijklmn'+',,,,'
set @_i=CHARINDEX(',',@_str)
while @_i=1 --删除前面重复的','
begin
set @_str=right(@_str,len(@_str) -1)
set @_i=CHARINDEX(',',@_str)
end
while @_i>0
begin
set @_a=left(@_str,@_i -1)
--编写程序
if @_a<>''
select @_a
set @_str=right(@_str,len(@_str)-@_i)
set @_i=charindex(',',@_str)
while @_i=1 --删除后面重复的','
begin
set @_str=right(@_str,len(@_str) -1)
set @_i=CHARINDEX(',',@_str)
end
end
select ('N0002' + right(convert(varchar(10),year(getdate())),2)
+ convert(varchar,month(getdate()))
+right(convert(varchar,getdate(),111),2))+right('0000'+convert(varchar(4),(substring(isnull(max(ordno),0),12,4)+ 1)),4) as ordno1
from mps_mfg_ord
where ordno like ('N0002' + right(convert(varchar(10),year(getdate())),2)
+ convert(varchar,month(getdate()))
+right(convert(varchar,getdate(),111),2)) +'____'
简化版:SET @_cCheckID=(SELECT 'CH'+CONVERT(CHAR(4),GETDATE(),12)+RIGHT(('0000'+CONVERT(VARCHAR(4),RIGHT(ISNULL(MAX(cCheckid),0),4)+1)),4)
FROM gs_procheck_mst
WHERE cCheckid LIKE ('CH'+CONVERT(CHAR(4),GETDATE(),12)+'____')
)
9、发现了一个SQL重要功能,通过(触发器:INSTEAD OF)来改变插入的值;
也可以用这个功能来实现一次性输入插入多个表或更新多个表的功能。
10、计算字符串公式,返回数值
--//***********************************************************************
--//函数:Gu_GetComputeExp
--//功能:计算字符串公式,比如将 2*5+5字符串返回结果为15
--//入口参数:/*传递该函数的参数列表及相对应的说明*/
--//出口参数
--// @_cExpression,varchar(8000)字符串
--// @_nValue,dec(18,6),返回计算值
--// 返回:integer
--//调用事例:/*函数在程序段中调用的实例说明*/
--//作者:Chunlei Gu时间:2008/12/27;修改:*** 时间:
--/***********************************************************************
CREATE PROCEDURE [Gu_GetComputeExp]
@_cExpression varchar(8000),
@_nVaule dec(18,6) out
WITH ENCRYPTION
AS
DECLARE @_DySQLl nvarchar(4000)
BEGIN
SET @_DySQLl = N'set @_nVaule = ' + @_cExpression
EXEC SP_EXECUTESQL @_DySQLl ,N'@_nVaule decimal(18,6) out', @_nVaule out
END
11、数据库恢复
restore database NGBaBei from disk='D:\3.NGGS项目\2.项目开发\Gerp_BaBei\database\090107nbbabei' with replace
restore database NG0001 from disk='D:\3.NGGS项目\8.安装文件\ng00010116\ng00010116' with replace
12、提高SQL性能:
WITH RECOMPILE 每次执行都进行编译
SET NOCOUNT ON 这个声明可以有助于减少服务器和客户端之间的通信
- SQL存储过程触发器语句汇总
- SQL基本编程,分支语句,循环语句,存储过程,触发器
- SQL Server 存储过程和触发器sql语句练习
- SQL存储过程、触发器
- 【汇总】存储过程、触发器 资料
- T-SQL语句(建库,建表,事务,存储过程,触发器等...)
- waitfor 定时执行存储过程,触发器,T-SQL语句
- SQL语句查询存储过程 视图 所有表 触发器
- 手动 重编译存储过程、SQL语句、函数、触发器、视图
- Sql 语句 增删改查 存储过程 触发器
- 存储过程和触发器-语句触发器
- syscomments 存储系统存储过程、用户存储过程、视图、函数、触发器等对象的sql定义语句
- sql触发器存储过程解析
- SQL存储过程与触发器
- 存储过程与触发器优缺点汇总
- 一条SQL语句查询MS SQL Server数据库中的所有表、存储过程、触发器
- 从 syscomments 取系统存储过程、用户存储过程、视图、函数、触发器等对象的sql定义语句
- 一条SQL语句查询数据库中的所有表、存储过程、触发器 (sysobjects表信息)
- Android面试疑难杂症汇总
- 如何用adb 进入数据库操作
- Servlet+JSP
- IOS面试疑难杂症汇总
- github新分支出现 Everything up-to-date
- SQL存储过程触发器语句汇总
- 再谈关注分离, 基于版本控制的设计
- HDU 1025 DP + 二分
- ZZY的宠物
- 大学期间应不应该考虑兴趣?
- [ACM]u Calculate e
- java面试中的智力题
- C语言中二维数组动态分配内存
- SQL Server CLR全功略之一---CLR介绍和配置