sql server存储过程的使用

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
--SET NOCOUNT ON 
 
--sql server存储过程被创建之后,它的名字就存储在系统表sysobjects中;
 
--存储过程从创建到执行要经历语法分析、代码解析、编译和执行四个阶段;
--编译阶段是指分析存储过程和生成存储过程执行计划的过程
 
 
--查询教师的工资是否低于1200元,以便决定是否加薪
IF EXISTS ( SELECT  FROM  Teacher  WHERE  SAL < 1200)
     BEGIN
             SELECT  NO , NAME ,SAL  FROM  Teacher  WHERE  SAL <1200
             SELECT  '以上教师工资<1200,需考虑加薪'  提示
     END
ELSE
     PRINT  '所有教师工资在计以上,暂时不考虑加薪'
     
 
--判断数据库是否存在
IF DB_ID(N 'Mytest' ) IS  NOT  NULL
     BEGIN
         PRINT  '数据库存在' 
         --判断数据表是否存在   
         IF OBJECT_ID( 'Mytest..Teacher' 'U' ) IS  NOT  NULL
             PRINT  '数据表存在'
         ELSE
             PRINT  '数据表不存在'
     END
ELSE
     PRINT  '数据库不存在'
     
 
--while循环语句的用法
DECLARE  @I  INT , @ SUM  INT
SELECT  @I=1, @ SUM =0
WHILE @I < 10
     SELECT  @ SUM  = @ SUM  + @I, @I = @I + 1
PRINT @ SUM
 
 
--创建无参数的存储过程
USE Mytest
GO
CREATE  PROC TEST1
WITH  RECOMPILE     --在每次执行时对存储过程进行冲编译处理
AS      --用于指定该存储过程要执行的操作
SELECT  FROM  Teacher
 
--删除存储过程
DROP  PROC TEST1
--执行存储过程
EXEC  TEST1
--查看存储过程源代码(小写)
EXEC  sp_helptext TEST1       
--查看存储过程的参数及其数据类型
EXEC  sp_help TEST4
 
 
--创建带输入参数的存储过程
USE Mytest
GO
CREATE  PROC TEST2
     @TNAME  VARCHAR (12)
     --@TNAME VARCHAR(12) = '李'
     AS
         IF(@TNAME  IS  NULL )
             BEGIN
                 RAISERROR( 'NULL VALUE ARE INVALID' ,5,5)
                 RETURN      --立刻退出该过程,只能返回整数,默认返回值为0
             END
         ELSE
             BEGIN
                 SELECT  FROM  Teacher  WHERE  Tname = @TNAME
                 RETURN
             END
         
DROP  PROC TEST2
DECLARE  @RETURN_VALUE  INT
EXEC  @RETURN_VALUE=TEST2  '李'
SELECT  @RETURN_VALUE
/*return返回
0:过程成功执行
1:对象丢失
2:发生数据类型错误
3:处理过程被死锁
4:发生权限错误
5:发生语法错误
6:发生恶意用户错误
7:发生资源错误
*/
 
 
--创建带输出参数的存储过程
USE Mytest
GO
CREATE  PROC TEST3
     @TNAME  VARCHAR (12)  OUTPUT
AS
BEGIN
     SELECT  @TNAME = Tname  FROM  Teacher  WHERE  T# = 50050
END
 
DROP  PROC TEST3
DECLARE  @ NAME  VARCHAR (12)
EXEC  TEST3 @ NAME  OUTPUT
SELECT  @ NAME
 
 
--创建带入参和出参的存储过程
USE Mytest
GO
CREATE  PROC TEST4
     @TNAME  VARCHAR (12),
     @ NAME  VARCHAR (12)  OUTPUT
AS
BEGIN
     UPDATE  Teacher  SET  Tname = @TNAME  WHERE  T# = 50050
     SELECT  @ NAME  = Tname  FROM  Teacher  WHERE  Tname = @TNAME
END
 
DROP  PROC TEST4
DECLARE  @tNAME  VARCHAR (12)
EXEC  TEST4  '李' ,@tNAME  OUTPUT
SELECT  @tNAME
 
 
--建立创建sql server数据表的存储过程
CREATE  PROC SP_CREATE_TABLE
     @TableName SYSNAME
AS
     EXEC ( 'CREATE TABLE ' +@TableName+ ' (column1 varchar(100), column2 varchar(100))' );
     --EXEC('DROP TABLE '+@TableName);
     --EXEC('ALTER TABLE '+@TableName+ ...)
GO
 
DROP  PROC SP_CREATE_TABLE
EXEC  SP_CREATE_TABLE testT
DROP  TABLE  testT
 
 
--建立重命名sql server数据表的存储过程
CREATE  PROC SP_RENAME_TABLE
     @OLD_TABLE_NAME SYSNAME,
     @NEW_TABLE_NAME SYSNAME
AS
     IF EXISTS( SELECT  FROM  INFORMATION_SCHEMA.TABLES 
               WHERE  TABLE_SCHEMA =  'dbo'
               AND  TABLE_TYPE =  'BASE TABLE'
               AND  TABLE_NAME = @OLD_TABLE_NAME)
     BEGIN
         EXEC  sp_rename @OLD_TABLE_NAME, @NEW_TABLE_NAME
         --EXEC sp_renamedb @OldDataBaseName, @NewDataBaseName        --重命名数据库
     END
     
DROP  PROC SP_RENAME_TABLE
EXEC  SP_RENAME_TABLE  'testT' , 'testTable'

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
25天前
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第18天】SQL Server 存储过程具有提高性能、增强安全性、代码复用和易于维护等优点。它可以减少编译时间和网络传输开销,通过权限控制和参数验证提升安全性,支持代码共享和复用,并且便于维护和版本管理。然而,存储过程也存在可移植性差、开发和调试复杂、版本管理问题、性能调优困难和依赖数据库服务器等缺点。使用时需根据具体需求权衡利弊。
|
20天前
|
存储 SQL 缓存
SQL Server存储过程的优缺点
【10月更文挑战第22天】存储过程具有代码复用性高、性能优化、增强数据安全性、提高可维护性和减少网络流量等优点,但也存在调试困难、移植性差、增加数据库服务器负载和版本控制复杂等缺点。
|
23天前
|
存储 SQL 数据库
Sql Server 存储过程怎么找 存储过程内容
Sql Server 存储过程怎么找 存储过程内容
24 1
|
26天前
|
存储 SQL 数据库
SQL Server存储过程的优缺点
【10月更文挑战第17天】SQL Server 存储过程是预编译的 SQL 语句集,存于数据库中,可重复调用。它能提高性能、增强安全性和可维护性,但也有可移植性差、开发调试复杂及可能影响数据库性能等缺点。使用时需权衡利弊。
|
1月前
|
存储 SQL 数据库
SQL Server 临时存储过程及示例
SQL Server 临时存储过程及示例
49 3
|
30天前
|
存储 SQL 安全
|
存储 SQL
sql_存储过程、函数、分支、循环
sql_存储过程、函数、分支、循环
132 0
|
存储 SQL 安全
SQL 存储过程和函数的对比、变量、条件和处理程序、游标、流程控制详解+代码示例
SQL 存储过程和函数的对比、变量、条件和处理程序、游标、流程控制详解+代码示例
|
SQL 存储 数据安全/隐私保护