SQL 存储过程入门(变量)
2013-04-11 17:09
381 查看
SQL存储过程入门(变量)(二)
上一篇我们讲到了SQL存储过程的基本定义,怎么创建,使用,这篇就来讲一下变量的使用。变量分文局部变量和全局变量
局部变量是@开头,全局变量是@@开头,这里我们主要讲局部变量,全局变量我们后面再讲。
在c#语言中,定义一个变量很简单,例如
inti=0;--定义加赋值。
在sql中,定义一个变量需要关键字DECLARE,还需要个特殊符号标记(@)表示是变量。
看看简单的声明语法:
Declare@Local_Vardata_type
@Local_Var是一个整体,表示一个变量。
data_type就是数据类型了,这个大家都很熟悉的,例如int,decimal,float,text等。
变量声明了,怎么赋值呢,能在声明的时候赋值么?像这样
declare@ID=2varchar(20);
这样是不行的,但是这样呢
declare@IDvarchar(20)=2 print@ID--这句话的意思是在sqlserver窗口中打印出变量的值 这样是正确的,结果是 --------- 2
声明可以赋值,再声明后是可以再赋值的,
这里有两种方式赋值
set,select,先看基本用法,再说区别
一,基本用法
declare@IDvarchar(20)--定义一个变量叫@ID set@ID=3--变量赋值为3 print@ID--打印 select@ID=1--变量赋值为1 print@ID--打印 查看结果 ------------- 3 1
从上面看出来了,Set,与select都可以给变量赋值。
然后我们看看变量的运算,运算其实很简单,下面看看加减法
declare@IDvarchar(20) set@ID=3 print@ID select@ID=1+@ID--将变量@id加1 print@ID select@ID=(select1+5)--类似于@ID=1+5 print@ID select@ID=(select1-@ID)--类似于@ID=1-@ID print@ID 结果 -----------
3
4
6
-5
我们再看看乘除法呢
declare@IDint
set@ID=3
print@ID
select@ID=2*@ID--乘以2
print@ID
select@ID=(@ID/2)--除以2
print@ID
select@ID=(@ID*@ID)--乘方
print@ID
结果
-----------
3
6
3
9
最后看一下模运算%
declare@IDint
set@ID=(10%3)
print@ID
select@ID=(10%2)
print@ID
结果
---------
1
0
二,区别
1,表达式返回多个值时
表达式返回多个值时,使用SET赋值
declare@namevarchar(128)
set@name=(selectusernamefromuserinfo)
print@name
/*
--出错信息为
服务器:消息512,级别16,状态1,行2
子查询返回的值多于一个。当子查询跟随在=、!=、<、<=、>、>=之后,或子查询用作表达式时,这种情况是不允许的。
*/
表达式返回多个值时,使用SELECT赋值
declare@namevarchar(20)
select@name=usernamefromuserinfo
print@name--结果集中最后一个username列的值
结果:
---------
wangwu
2,表达式未返回值时
--表达式未返回值时,使用SET赋值
declare@namevarchar(20)
set@name='jack'
set@name=(selectusernamefromuserinfowhereusername='not')
print@name--Null值
结果
--------
--表达式未返回值时,使用SELECT赋值
declare@namevarchar(20)
set@name='jack'
select@name=usernamefromuserinfowhereusername='not'
print@name--jack,保存原来的值
结果
-------
jack
这里简单总结下
下表列出SET与SELECT的区别。
条件 | set | select |
表达式返回多个值 | 出错 | 将返回的最后一个值赋给变量 |
表达式未返回值 | 变量被赋为null值 | 变量保持原值 |
CREATEPROCEDUREUserLogin1--创建一个存储过程来判断登录
@namevarchar(20),
@passwordvarchar(20),
@inReturnintoutput--输出参数
AS
--这里来定义一个变量来保存密码
Declare@strPwdvarchar(20)
BEGIN
select@strPwd=userPassfromuserinfowhereuserName=@name--通过select给变量@strPwd赋值
if(@password=@strPwd)
begin
set@inReturn=1
--假设来更新个时间
updateuserinfosetregistertime=getdate()whereuserName=@name
end
else
set@inReturn=-1--如果密码不正确,返回-1
END
GO
--测试方法
declare@testint
execUserLogin1'admin','admin',@testoutput--这里如果没有output关键字,则@test的值为NULL
print@test
结果:
-------------
(1行受影响)
1
--或这样调用:
declare@testint
EXECUserLogin1@name='admin',@password='admin',@inReturn=@testoutput
print@test
--结果跟上面是一样的
--如果我们登录不正确,像这样
declare@testint
EXECUserLogin1@name='admin1',@password='admin',@inReturn=@testoutput
print@test
结果
-------------
-1--这里的值是存储过程中设置的值。如果失败,则返回-1,这就是output的作用。
未完待续..........
SqlSever
摘要:上一篇我们讲到了SQL存储过程的基本定义,怎么创建,使用,这篇就来讲一下变量的使用。变量分文局部变量和全局变量局部变量是@开头,全局变量是@@开头,这里我们主要讲局部变量,全局变量我们后面再讲。在c#语言中,定义一个变量很简单,例如inti=0;--定义加赋值。在sql中,定义一个变量需要关键字DECLARE,还需要个特殊符号标记(@)表示是变量。看看简单的声明语法:Declare@Local_Vardata_type@Local_Var是一个整体,表示一个变量。data_type就是数据类型了,这个大家都很熟悉的,例如int,decimal,float,text等。变量声明了,怎
posted@
摘要:大学里面对存储过程没有讲到什么,工作了一段时间,对存储过程还是没有用到,根本不需要去写存储过程,可能是做的软件方向的原因吧。为了以后发展,决定从零开始学习下。一,基础知识/article/5288155.html二,变量使用/article/5288156.html这里看看存储过程的定义,存储过程(StoredProcedure),是一组为了完成特定功能的SQL语句,集经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数
posted@
摘要:数据库的做链接我们经常遇到,有一次发现了顺序问题,没有搞明白,现在在回顾总结下。首先创建2张表A,B,然后插入初始化数据。createtableA(idint);createtableB(idint);INSERTINTOAVALUES(1);INSERTINTOAVALUES(2);INSERTINTOAVALUES(3);INSERTINTOBVALUES(1);INSERTINTOBVALUES(2);INSERTINTOBVALUES(3);SELECT*FROMA;SELECT*FROMB;id123id123我们假设命名为
posted@
摘要:网上看到一位大哥总结的sql,转过来学习//原文出处
相关文章推荐
- SQL 存储过程入门(变量)(二)
- SQL 存储过程入门(事务)(四)
- SQL知识整理一:触发器、存储过程、表变量、临时表
- (转载) SELECT 与 SET 对变量赋值的区别 存储过程 sql 2000
- 源码-PL/SQL从入门到精通-第三章-变量和类型-Part 1
- 源码-PL/SQL从入门到精通-第三章-变量和类型-Part 2
- T-SQL入门攻略之5-T-SQL的变量与常量
- SQL 存储过程入门(五)
- SQL 存储过程入门(流程控制3
- SQL 存储过程入门(事务)
- SQL 存储过程入门(基础知识)(一)
- MS SQL入门基础:SQL 变量
- mssql:t-sql;创建表;给表添加约束;使用变量;事务,索引,视图;存储过程
- 关于SQL 存储过程入门基础(变量)
- sql 存储过程返回值 变量名
- SELECT 与 SET 对变量赋值的区别 存储过程 sql 2000(转载)
- mssql:t-sql;创建表;给表添加约束;使用变量;事务,索引,视图;存储过程;触发器trigger;播放器http://www.smartgz.com/blog/Article/956.asp
- SQL知识整理一:触发器、存储过程、表变量、临时表
- MS SQL入门基础:SQL 变量
- 存储过程调用表名为变量...(含基本sql语法说明)