sql server存储过程的使用-阿里云开发者社区

开发者社区> 墨云天> 正文

sql server存储过程的使用

简介:
+关注继续查看
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'

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
sqlserver 通用分页存储过程
来源:http://www.jb51.net/article/19936.htm CREATE PROCEDURE commonPagination @columns varchar(500), --要显示的列名,用逗号隔开 @tableName varchar(100), --要查询...
681 0
Castle.ActiveRecord 使用 存储过程 返回实体类
Castle,ActiveRecord,使用,存储过程,实体类 这几日就在研究这个问题 寻遍网上,也没找到个解决方法只有在NHibernate里执行存储过程 里面操作NHibernate的一点方法 于是动手写成了以下这个类 当然,只能保证测试可以通过,可能还有很多问题,要一个一个解决  1namespace ChAlumna.
725 0
JDBC调用存储过程,以及存储过程 事务的使用.....
在JDBC中调用存储过程 首先就要在数据库中存在 要调用的过程  ,存储过程是一组SQL语句的集合,我们吧实现某一功能的 SQL语句集合在一起来使用,方便了用户,不光是这样,存储过程可以预编译,也就是说只要调用了一次存储过程,那么下次在调用存储过程的时候 就不需要进行再次编译了  。
823 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
12071 0
SQL使用链接服务器执行远程数据库上的存储过程
原文:SQL使用链接服务器执行远程数据库上的存储过程   --创建链接服务器 exec sp_addlinkedserver'server_tmp','','SQLOLEDB','远程服务器名或ip地址' exec sp_addlinkedsrvlogin'server_tmp','fa...
1186 0
SQL Server 存储引擎-剖析Forwarded Records
原文:SQL Server 存储引擎-剖析Forwarded Records 我们都知道数据在存储引擎中是以页的形式组织的,但数据页在不同的组织形式中其中对应的数据行存储是不尽相同的,这里通过实例为大家介绍下堆表的中特有的一种情形Forwared Records及处理方式.
999 0
+关注
133
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载