SQL SERVER 存储过程基础
一.注释
-- 单行注释,从这到本行结束为注释,类似C++,c#中// /* … */ 多行注释,类似C++,C#中/* … */
二.变量
(int, smallint, tinyint, decimal,float,real, money ,smallmoney, text ,image, char, varchar。。。。。。)
语法: DECLARE { {@local_variable data_type} } [,...n]
例如: declare @ID int --申明一个名为@ID的变量,类型为int型
三.在SQL Server窗口中打印出变量的值
语法:
PRINT 'any ASCII text' | @local_variable | @@FUNCTION | string_expr
四.变量赋值
例如:
--从数据表中取出第一行数据的ID,赋值给变量@id,然后打印出来 Declare @ID int
Set @ID = (select top(1) categoryID from categories) Print @ID
在SQL中,我们不能像代码那样直接给变量赋值,例如@id = 1,如果要达到这样的功能,可以这样写:
Declare @ID int
Set @ID = (select 1) -- 类似 @ID=1 Select @id=1 -- 类似 @ID=1 Print @ID
五.变量运算(+,-,*,/,……)
以下必要时候省略变量申明
Set @ID = (select 1+5) --类似 @ID=1+5
Set @ID=(select 1-@ID) --类似 @ID=1-@ID
六.比较操作符
> (greater than).
< (less than).
= (equals).
<= (less than or equal to).
>= (greater than or equal to).
!= (not equal to).
<> (not equal to).
!< (not less than).
!> (not greater than)
七.语句块:Begin … end
将多条语句作为一个块,类似与C++,C#中的{ } 例如: Begin
Set @ID1 = (select 1) Set @ID2 = (select 2) End
八.If, if…else… 语法:
IF Boolean_expression
{sql_statement | statement_block} [ELSE
{sql_statement | statement_block}] 例如:
If @id is not null Print ‘@id is not null if @ID = 1
begin
Set @ID = (select 1 + 1) end else
begin
set @ID=(select 1+2)
end
上面的例子用到了比较操作符,语句块,和IF的语法。
九.执行其他存储过程 EXEC
例如 EXEC dbo.[Sales by Year] @Beginning_Date=’1/01/90’, @Ending_Date=’1/01/08’
十.事务
语法:
BEGIN TRAN[SACTION] [transaction_name | @tran_name_variable]
例如
BEGIN TRAN
-- 做某些操作,例如Insert into … if @@error <> 0 BEGIN
ROLLBACK TRAN END else
BEGIN
COMMIT TRAN END
十一.游标
我们可以在存储过程中用Select语句取出每一行数据进行操作,这就需要用到游标。
语法:
DECLARE cursor_name CURSOR [LOCAL | GLOBAL]
[FORWARD_ONLY | SCROLL]
[STATIC | KEYSET | DYNAMIC | FAST_FORWARD] [READ_ONLY | SCROLL_LOCKS | OPTIMISTIC] [TYPE_WARNING] FOR select_statement
[FOR UPDATE [OF column_name [,...n]]]
例如:
DECLARE @au_id varchar(11), @au_fname varchar(20) –申明变量 --申明一个游标
DECLARE authors_cursor CURSOR FOR SELECT au_id, au_fname FROM authors --打开游标
OPEN authors_cursor --取出值
FETCH NEXT FROM authors_cursor INTO @au_id, @au_fname --循环取出游标的值
WHILE @@FETCH_STATUS = 0 BEGIN Print @au_id Print @au_fname Print ‘ ’
FETCH NEXT FROM authors_cursor INTO @au_id, @au_fname END
CLOSE authors_cursor –关闭游标
DEALLOCATE authors_cursor --释放游标
十二、执行存储过程
sp_helptext @objname = 'name'sp_helptext [ @objname = ] 'name' [ , [ @columnname = ] computed_column_name
示例:
sp_helptext '存储过程名称'
SQL SERVER 存储过程基础的更多相关文章
- sql server 存储过程基础知识
转自家园大哥博文http://www.cnblogs.com/jiajiayuan/archive/2011/06/15/2081201.html 什么是存储过程呢?存储过程就是作为可执行对象存放在数 ...
- Sql server 存储过程基础语法
一.定义变量 --简单赋值 declare @a int print @a --使用select语句赋值 declare @user1 nvarchar() select @user1='张三' pr ...
- 14、SQL Server 存储过程
SQL Server 存储过程 存储过程类似函数,可以重复使用.相对于函数,存储过程拥有更强大的功能和更高的灵活性. 存储过程中可以包含逻辑控制语句和数据操作语句,可以接受参数,输出参数,返回单个值或 ...
- Sql Server数据库基础
--------------------------------------第一章 Sql Server数据库基础------------------------------------------ ...
- 第一篇——第一文 SQL Server 备份基础
原文:第一篇--第一文 SQL Server 备份基础 当看这篇文章之前,请先给你的所有重要的库做一次完整数据库备份.下面正式开始备份还原的旅程. 原文出处: http://blog.csdn.net ...
- C#面试题(转载) SQL Server 数据库基础笔记分享(下) SQL Server 数据库基础笔记分享(上) Asp.Net MVC4中的全局过滤器 C#语法——泛型的多种应用
C#面试题(转载) 原文地址:100道C#面试题(.net开发人员必备) https://blog.csdn.net/u013519551/article/details/51220841 1. . ...
- SQL Server存储过程中使用表值作为输入参数示例
这篇文章主要介绍了SQL Server存储过程中使用表值作为输入参数示例,使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据,这样 ...
- SQL Server存储过程Return、output参数及使用技巧
SQL Server目前正日益成为WindowNT操作系统上面最为重要的一种数据库管理系统,随着 SQL Server2000的推出,微软的这种数据库服务系统真正地实现了在WindowsNT/2000 ...
- cmd常用命令 和 sql server相关基础
在Java开发中 ms sql server 接触算是比较少的,本文记录一些ms sql server的基础知识. 1. 为表字段增加索引:create index user_openid on us ...
随机推荐
- 使用Aspose.Word的基础知识整理
var doc = new Document(path); doc.AcceptAllRevisions();//接受所有修订
- log4j_slf4j log4j.properties
hibernate 使用的日志是slf4j,而 slf4j又有各种实现策略. 使用log4j 就是其中一种方式. 需要的jar 包: log4j-1.2.16.jar slf4j-api-1.6.1. ...
- random随机函数
SQL> select * from (select ename,job from emp order by dbms_random.value() ) where rownum <5 2 ...
- poj3167
这道题是一道kmp的扩展版的好题一串匹配一串很容易想到kmp,但是这里的匹配要求的是两个串的名次相同显然名次是会变的,为了方便,我们可以换一种表达对于两个等长的串的相同位置,名次相等就是在它之前比它小 ...
- HashMap循环遍历方式及其性能对比
主要介绍HashMap的四种循环遍历方式,各种方式的性能测试对比,根据HashMap的源码实现分析性能结果,总结结论. 1. Map的四种遍历方式 下面只是简单介绍各种遍历示例(以HashMap为 ...
- mac上的键盘生活——快捷键列表
主界面 command + tab 切换程序 command + ` 在程序内切换界面 command + w 关闭界面 command + q 关闭程序 文本编辑 Com ...
- hdoj 1969 Pie【二分】
Pie Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
- 如何高性能的给UIImageView加个圆角?(不准说layer.cornerRadius!)
豆电雨 搬砖自味精:http://awhisper.github.io/2016/03/12/滚动圆角卡顿刨根问底/ 使用Quartz2D直接绘制图片 步骤: a.创建目标大小(cropWidth, ...
- Tomcat8 配置NIO
conf/server.xml 打开:<Executor name="tomcatThreadPool" namePrefix="catalina-exec-&qu ...
- Maven浅析-1
Maven的配置 1.首先从http://maven.apache.org/download.cgi下载当前最新版本的maven. 如果不想自己安装maven的话,建议直接下binary zip文件, ...