做交易平台的网站需要哪些技术,代做通一样的网站,群推广,电子工程专辑网站1#xff0c;前言 这是实习期间学习的#xff0c;我可能是在学校没好好听课#xff0c;#xff08;或者就是学校比较垃#xff0c;没教这部分#xff0c;在公司经理让我下去自己学习#xff0c;太难了#xff0c;因为是公司代码很多部分都是很多表的操作#…1前言 这是实习期间学习的我可能是在学校没好好听课或者就是学校比较垃没教这部分在公司经理让我下去自己学习太难了因为是公司代码很多部分都是很多表的操作所以导致都是存储过程我最开始一脸懵 存储过程适用于各种关系型数据库它就相当于是多条sql语句写在一起写成了一个程序可以一起执行。可能不准确但是我觉得比较便于理解 百度百科解释存储过程Stored Procedure是在大型数据库系统中一组为了完成特定功能的SQL 语句集它存储在数据库中一次编译后永久有效用户通过指定存储过程的名字并给出参数如果该存储过程带有参数来执行它。存储过程是数据库中的一个重要对象。在数据量特别庞大的情况下利用存储过程能达到倍速的效率提升。 根据此解释我们可以分析一下抓住其中几个关键部分
2存储过程的优点 (1)重复使用存储过程可以重复使用从而可以减少数据库开发人员的工作量。 (2)一次编译后永久有效能够实现较快的执行速度 (3)能够减少网络流量 (4)可被作为一种安全机制来充分利用可以防止sql注入攻击
3适用情况 由此可见存储过程优点还是很多的虽然也有缺点但是使用与否还是要看实际情况存储过程适用于 复杂业务逻辑涉及多个表、多次查询和更新操作的复杂业务流程。 批量操作导入大量数据、批量更新或删除数据。 提高性能。 数据安全性和权限控制。 数据一致性和事务管理存储过程可以包含事务处理语句确保一系列数据库操作的原子性和一致性。 对于简单的数据库操作或只涉及单个查询的情况直接在应用程序中执行SQL语句可能更为简洁和高效。所以会了存储过程可不能写一个简单的单表查询就用存储过程
4存储过程的分类 存储过程可分为三类系统提供的存储过程、用户自定义存储过程和扩展存储过程 系统系统提供的存储过程sp_* 扩展SQL Server环境之外的动态链接库DLLxp_ 远程远程服务器上的存储过程 用户创建在用户数据库中的存储过程 临时属于用户存储过程#开头局部一个用户会话,##全局所有用户会话
5创建用户存储过程 首先肯定是先找到位置打开存储过程下面是两个软件不同位置一个是可编程性一个是函数。 下面就是最最最重要的了 如何开始写存储过程 例如我们创建一个存储过程(空)
CREATE PROCEDURE [dbo].[abc]
AS
BEGINEND格式
CREATE PROC 过程名
形参名 类型
变参名 类型 OUTPUT
AS SQL语句 其中[abc]是存储过程的名字可以就行更改只要再次进行编译就可以。 简单的写两个实例 1创建一个多表查询的存储过程
USE ABC
GO
CREATE PROCEDURE [dbo].[abc]
AS
SELECT x.sid,x.sname,y.cid,y.grade
FROM student x INNER JOIN sc y
ON x.sidy.sid
WHERE x.sid‘101010’2利用输出参数计算阶乘
USE ABC
IF EXISTS(SELECT name FROM sysobjects
WHERE name‘bcd’ AND type‘P’) --名称是bcd类型是procedure
DROP PROCEDURE factorial
GO
CREATE PROCEDURE [dbo].[bcd]
in float , --输入形式参数
out float OUTPUT --输出形式参数
AS
DECLARE i int
DECLARE s float
SET i1
SET s1
WHILE iin
BEGIN
SET ss*i
SET ii1
END
SET outs --给输出参数赋值由此可见存储过程也不难理解它还有另外几部分
调用存储过程 DECLARE ou float EXEC factorial 5,ou out --实参表 PRINT ou
删除存储过程 语法 Drop procedure 过程名 SSMS方式删除右键点击该存储过程删除
修改存储过程 语法 Alter procedure 过程名 As SQL 语句 以上是对存储过程简单的介绍具体还有在程序中使用的部分如何调用需要什么参数这都是需要继续的学习 最后给大家看一下我学习成果我写的一段简单的存储过程
USE [XXX]
GOSET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--
-- Author:
-- Last Date:
-- Description: 数据校验
--
ALTER PROCEDURE [dbo].[XXX_OfflineDataCheck2]
EngineSerialNo NVARCHAR(255) NULL,
EngineType NVARCHAR(255) NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE QCOUNT INT, TCOUNT INT, Result INT, TYPE NVARCHAR(255)
SET Result 0
SELECT TYPE LocationNo FROM Mst_Product WHERE EngineType EngineType
IF TYPE 33
BEGINSELECT TCOUNT COUNT(*) FROM Trn_InspectionConfig WHERE EngineType EngineType AND StationCode NOT IN (F01-3,F03-3,M15-2,S04-2,S13-2,S14-2,S15-2,F06,F07,F08)
END
ELSE
BEGINSELECT TCOUNT COUNT(*) FROM Trn_InspectionConfig WHERE EngineType EngineType AND StationCode NOT IN (F01-3,F03-3,M15-2,S04-2,S13-2,S14-2,S15-2)
END
SELECT QCOUNT COUNT(*) FROM Tmp_QualityDatas WHERE EngineSerialNo EngineSerialNo
SELECT TCOUNT,QCOUNT
IF QCOUNT TCOUNT
BEGINSELECT QCOUNT COUNT(*) FROM (SELECT * FROM Trn_QualityDatas UNION ALL SELECT * FROM Tmp_QualityDatas) A WHERE EngineSerialNo EngineSerialNo
END
SELECT TCOUNT,QCOUNT
IF QCOUNT TCOUNT SET Result 21
RETURN Result
SET NOCOUNT OFF;
END