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

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), --要查询...
706 0
Sql Server 存储过程使用技巧
1、创建带Try。。。Catch的存储过程模板   Copy下面的代码,然后新建查询,就可以写sql语句,执行完后,一个你自己的存储过程就建立好了! USE [DB]--设定对应的数据库 GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER O...
741 0
解剖SQLSERVER 第十五篇 SQLSERVER存储过程的源文本存放在哪里?(译)
原文:解剖SQLSERVER 第十五篇 SQLSERVER存储过程的源文本存放在哪里?(译) 解剖SQLSERVER 第十五篇  SQLSERVER存储过程的源文本存放在哪里?(译) http://improve.dk/where-does-sql-server-store-the-source-for-stored-procedures/ 目前我正在扩展OrcaMDF Studio的功能 不单只支持系统表,DMVs 和用户表 而且也要支持存储过程。
963 0
+关注
133
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载