时间:2021-05-02
上一篇我们讲到了SQL存储过程的基本定义,怎么创建,使用,这篇就来讲一下变量的使用。
变量分文局部变量和全局变量
局部变量是@开头,全局变量是@@开头,这里我们主要讲局部变量,全局变量我们后面再讲。
在c# 语言中,定义一个变量很简单,例如
复制代码 代码如下:
int i=0; --定义加赋值。
在sql中,定义一个变量需要关键字DECLARE,还需要个特殊符号标记(@)表示是变量。
看看简单的声明语法:
复制代码 代码如下:
Declare @Local_Var data_type
@Local_Var是一个整体,表示一个变量。
data_type就是数据类型了,这个大家都很熟悉的,例如int,decimal ,float,text等。
变量声明了,怎么赋值呢,能在声明的时候赋值么?像这样
复制代码 代码如下:
declare @ID=2 varchar(20);
复制代码 代码如下:
declare @ID varchar(20)=2
print @ID --这句话的意思是在sql server窗口中打印出变量的值
这样是正确的,结果是
---------
2
一,基本用法
复制代码 代码如下:
declare @ID varchar(20)--定义一个变量叫@ID
set @ID=3--变量赋值为3
print @ID--打印
select @ID=1--变量赋值为1
print @ID--打印
查看结果
-------------
然后我们看看变量的运算,运算其实很简单,下面看看加减法
复制代码 代码如下:
declare @ID varchar(20)
set @ID=3
print @ID
select @ID=1+@ID--将变量@id加1
print @ID
select @ID=(select 1+5) --类似于@ID=1+5
print @ID
select @ID=(select 1-@ID) --类似于@ID=1-@ID
print @ID
结果
-----------
3
4
6
-5
复制代码 代码如下:
declare @ID int
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 @ID int
set @ID=(10%3)
print @ID
select @ID=(10%2)
print @ID
结果
---------
1,表达式返回多个值时
复制代码 代码如下:
表达式返回多个值时,使用 SET 赋值
declare @name varchar(128)
set @name=(select username from userinfo)
print @name
表达式返回多个值时,使用 SELECT 赋值
declare @name varchar(20)
select @name= username from userinfo
print @name --结果集中最后一个 username 列的值
结果:
---------
wangwu
2,表达式未返回值时
复制代码 代码如下:
--表达式未返回值时,使用 SET 赋值
declare @name varchar(20)
set @name='jack'
set @name= (select username from userinfo where username='not')
print @name --Null值
结果
--------
--表达式未返回值时,使用 SELECT 赋值
declare @name varchar(20)
set @name='jack'
select @name=username from userinfo where username='not'
print @name --jack,保存原来的值
结果
-------
jack
下表列出 SET 与 SELECT 的区别。
条件 set select
表达式返回多个值出错将返回的最后一个值赋给变量
表达式未返回值变量被赋为null值变量保持原值
下面来看个综合的例子
复制代码 代码如下:
CREATE PROCEDURE UserLogin1 --创建一个存储过程来判断登录
@name varchar(20),
@password varchar(20),
@inReturn int output--输出参数
AS
--这里来定义一个变量来保存密码
Declare @strPwd varchar(20)
BEGIN
select @strPwd=userPass from userinfo where userName=@name --通过select 给变量@strPwd赋值
if(@password=@strPwd)
begin
set @inReturn=1
--假设来更新个时间
update userinfo set registertime=getdate() where userName=@name
end
else
set @inReturn=-1 --如果密码不正确,返回-1
END
GO
--测试方法
declare @test int
exec UserLogin1 'admin','admin',@test output --这里如果没有output关键字,则@test的值为NULL
print @test
结果:
-------------
(1 行受影响)
1
--或这样调用:
declare @test int
EXEC UserLogin1 @name='admin',@password='admin',@inReturn=@test output
print @test
--结果跟上面是一样的
--如果我们登录不正确,像这样
declare @test int
EXEC UserLogin1 @name='admin1',@password='admin',@inReturn=@test output
print @test结果
-------------
-1--这里的值是存储过程中设置的值。如果失败,则返回-1,这就是output的作用。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
昨天我们讲了mysql存储过程创建修改与删除,下面我们这篇教程是讲关于mysql存储过程中变量的定义赋值操作哦。一、变量的定义mysql中变量定义用declar
正在看的ORACLE教程是:OraclePL/SQL入门案例实践。 前面已经了解了关于PL/SQL编程的基础,本文将结合一个案例来加深对这些知识点的理解。 一
PostgreSQL函数也称为PostgreSQL存储过程。PostgreSQL函数或存储过程是存储在数据库服务器上并可以使用SQL界面调用的一组SQL和过程语
[sql]--===================【创建存储过程】=====================USE[Message]GO/******Obje
oracle创建,删除存储过程,参数传递,创建,删除存储函数,存储过程和函数的查看,包,系统包认识存储过程和函数存储过程和函数也是一种PL/SQL块,是存入数据