004-SQLServer存储过程基础语法

2024-07-25 17:23 004-SQLServer存储过程基础语法已关闭评论

CASE WHEN...THEN...ELSE...END

多选择语句,当WHEN条件为true,取THEN后的值,否则取ELSE后的值,然后结束。

具体实例:

SET @orderBy = CASE WHEN ISNULL(@orderBy, '') = '' THEN ' ORDER BY AutoID DESC ' ELSE ' ORDER BY ' + @orderBy END

DECLARE

声明变量关键字,后面是变量名称、变量类型、变量长度,结构:DECLARE @VAR_NAME 类型

具体实例:

DECLARE @sql VARCHAR(MAX)
DECLARE @sql2 VARCHAR(500)

SET

给变量赋值,结构:SET @VAR_NAME 值

具体实例:

SET @orderBy =' ORDER BY AutoID DESC '

OFFSET ... ROWS FETCH NEXT ... ROWS ONLY

SQL Server中的分页语法,OFFSET指定了要跳过的行数,FETCH NEXT指定了要返回的行数

具体实例:

SET @sql = 'SELECT AutoID, PID, MOMID, cDepCode, iDate, fQty, cDeviceCode, EquipName, cTeam, cTeamName, dWorkCreateTime, cMemo, optTime, optUserID, optUserName, ProcessType, MOM_MainNo, cInvCode, cInvName, cInvStd, ProcedureCode, ProcedureName, bClose, cInvDefine8, cDefine8,IsHide,fQty,iSerialNo FROM dbo.V_Machining_Allocate_Detail WITH(NOLOCK) WHERE 1=1 ' + @sWhere + @orderBy + ' OFFSET ' + CONVERT(VARCHAR(10), (@PageIndex - 1)*@PageSize) + ' ROW FETCH NEXT ' + CONVERT(VARCHAR(10), @PageSize) + ' ROWS ONLY; '
  • CONVERT(VARCHAR(10), (@PageIndex - 1)*@PageSize): 计算要跳过的行数,@PageSize为每页显示的记录数,@PageIndex为当前页码,则(当前页码 - 1) * 每页记录数给出了要跳过多少行。

  • CONVERT(VARCHAR(10), @PageSize): 直接使用@PageSize作为要返回的行数,转化为字符串类型以便在SQL语句中使用。

INSERT INTO #cTmp

正在向一个本地临时表#cTmp中插入数据。本地临时表仅在当前会话中可见,并且当会话结束或者显式地使用DROP TABLE语句时会被删除。

INSERT INTO #cTmp (AutoID, PID, MOMID, cDepCode, iDate, fQty, cDeviceCode, EquipName, cTeam, cTeamName, dWorkCreateTime, cMemo, optTime, optUserID, optUserName, ProcessType, MOM_MainNo, cInvCode, cInvName, cInvStd, ProcedureCode, ProcedureName, bClose, cInvDefine8, cDefine8,IsHide,IssueQty,iSerialNo)

EXEC (@sql)

执行存储在变量@sql中的SQL语句或存储过程。

CREATE TABLE #cTmp

创建一张临时表,临时表名称cTmp,结构:CREATE TABLE #cTmp

BEGIN...END

表示一个事务或一组相关操作,确保所有的操作作为一个整体执行。

具体实例:

BEGIN
SELECT @IsHideRestQty = IsHideRestQty, @iSerialNo = iSerialNo FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY iSerialNo ) AS RowNum, IsHideRestQty, iSerialNo FROM #data3
) AS t
WHERE t.RowNum = @index
UPDATE #data1 SET IsHideRestQty=@IsHideRestQty,isHide=1 WHERE iSerialNo>=@iSerialNo
SET @index = @index + 1
END

SELECT DISTINCT ...

去除重复的行,结构:SELECT DISTINCT 字段1,字段2,字段3

具体实例:

SELECT DISTINCT CASE WHEN #cTmp.RestQty=0 THEN 0 ELSE #cTmp.preQty- data1.IssueQtySum END RestQtyNew , #cTmp.*
INTO #cTmp2
FROM #cTmp JOIN data1 ON #cTmp.pid = data1.pid ;

SELECT DISTINCT ... INTO ... FROM ...

从一张表中取出去重后的数据,然后存入另一张表中。

具体实例:

SELECT DISTINCT CASE WHEN #cTmp.RestQty=0 THEN 0 ELSE #cTmp.preQty- data1.IssueQtySum END RestQtyNew , #cTmp.*
INTO #cTmp2
FROM #cTmp JOIN data1 ON #cTmp.pid = data1.pid ;

当前文章价值6.18元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)

你可能感兴趣的文章

来源:每日教程每日一例,深入学习实用技术教程,关注公众号TeachCourse
转载请注明出处: https://teachcourse.cn/3592.html ,谢谢支持!

资源分享

分类:SQLServer 标签:, ,
Python框架Flask封装和SQLAlchemy实际应用 Python框架Flask封装和SQLA
Android控件渲染主题颜色 Android控件渲染主题颜色
php类定义详细介绍 php类定义详细介绍
静态注册广播检查网络状态 静态注册广播检查网络状态

评论已关闭!