SQL里面的变量的使用

--局部变量
--定义语法:
--declare @名称 类型=默认值
declare @age int=20
--select @age
print @age
--输出方式:
--select :输出为结果集,可以输出多列
--print :一次只能输出一个值,以文本形式输出,每一次的输出单独占据一行
select 1,1
print 1+1 print 2
go
--变量可以同时定义多个:
declare @age int=20,@name nvarchar(50)=‘aa‘
print cast(@age as char(3))[email protected]

--变量的赋值:如果通过独立子查询赋值,那么Set和select没有任何区别
--set:直接赋值
--select:通过查询赋值
go
--查询比 张三丰 年龄大的学员信息
declare @time datetime=(select BornDate from Student where StudentName=‘张三丰‘)
select * from Student where BornDate<@time
go
declare @time datetime
--set @time=(select BornDate from Student where StudentName=‘张三丰‘)
select @time=(select BornDate from Student where StudentName=‘张三丰‘)
select * from Student where BornDate<@time
go
--1.如果独立子查询返回的值不止一个: 子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
--2.如果是多列值就会:当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式。
declare @time datetime
--set @time=(select BornDate from Student where StudentName=‘张三丰‘)
--select @time=(select BornDate from Student)
select @time=(select * from Student)
select * from Student where BornDate<@time
--区别:Set只能使用独立子查询赋值,但是select可以使用不完整的sql语句赋值,这种情况下,有三个区别
go
--1.Set不能同时为多个变量赋值 ,而select可以同时为多个变量赋值
declare @age int,@name nvarchar(50)
--set @age=20,@name=‘aa‘
select @age=20,@name=‘aa‘
print @age
print @name
go
--2.使用select赋值时,后面接不完整sql命令的时候,如果结果集返回了多行一列值那么select可以得到最后一个值
declare @age int,@name nvarchar(50)
--set @age=(select DATEDIFF(YY,BornDate,GETDATE()) from Student where StudentName=‘张三丰‘)
--set @age=(select DATEDIFF(YY,BornDate,GETDATE()) from Student)
select @age= DATEDIFF(YY,BornDate,GETDATE()) from Student order by StudentName-- where StudentName=‘张三丰‘
print @age
--3.如果接不完整sql语句返回了空结果集的时候,select保留原始的默认值(如果有的话)
go
declare @age int=20,@name nvarchar(50)=‘aa‘
--set @age=(select DATEDIFF(YY,BornDate,GETDATE()) from Student where StudentNo=100)
select @age=DATEDIFF(YY,BornDate,GETDATE()) from Student where StudentNo=100
print @age

--使用变量实现 :查询参加最近一次“office”考试成绩最高分和最低分: 将所有可能变化的值都存储到对应类型的变量中

declare @subjectName nvarchar(50)=‘c#‘ --科目名称
declare @subjectId int --科目ID
set @subjectId=(select SubjectId from Subject where [email protected])--根据科目名称获取科目ID
declare @time datetime --指定科目最近一次考试日期
select @time =(select MAX(ExamDate) from Result where [email protected]) --获取指定科目最近一次考试日期

select MAX(StudentResult),MIN(StudentResult) from Result
where [email protected] and [email protected]

--
go
declare @name char(5) --char类型如果没有定义长度那么长度为1
set @name=‘a‘--赋值的时候如果发现空间不够,那么会做自动的截取,多余的就抛弃
set @[email protected]+‘q‘
print @name

go
declare @@@@#age int =100
print @@@@#age
select * from Student
select @@ROWCOUNT
[email protected]@ERROR:可以获取最近一条sql命令的错误号
update Result set StudentResult=200 where StudentNo=10
--select * from Student
print ‘aa‘
select @@ERROR --如果错误号不为0说明当前这条语句出现错误,如果为0那么说明操作是成功的。

print @@SERVERNAME
print @@servicename

时间: 2024-11-07 11:50:34

SQL里面的变量的使用的相关文章

Linux/Unix shell sql 之间传递变量

灵活结合Linux/Unix Shell 与SQL 之间的变量传输,极大程度的提高了DBA的工作效率,本文针对Linux/Unix shell sql 之间传递变量给出几个简单的示例以供参考. Linux/Unix 下调用SQL,RAMN 请参考:Linux/Unix shell 脚本中调用SQL,RMAN脚本 一.示例 [python] view plain copy print? 1.shell变量接受sql返回值之方式一 [email protected]:~> more ./retval

在PL/SQL中使用游标、动态sql和绑定变量的小例子

需求:查询并输出30号部门的雇员信息 方式一:使用 loop...fetch 1 SET serveroutput ON; 2 DECLARE 3 CURSOR c_emp IS 4 SELECT * FROM emp WHERE deptno = 30; 5 v_emp emp%rowtype; 6 BEGIN 7 OPEN c_emp; 8 loop 9 fetch c_emp INTO v_emp; 10 exit WHEN c_emp%notfound; 11 dbms_output.p

Oracle PL/SQL编程之变量

注: 以下测试案例所用的表均来自与scott方案,使用前,请确保该用户解锁. 1.简介 和大多数编程语言一样,在编写PL/SQL程序时,可以定义常量和变量,在pl/sql程序中包括有: a.标量类型(Scalar) b.复合类型(Composite) c.参照类型(Refrence) d.lob(large object)类型 下面来一一介绍 2.标量(Scalar)类型  ---常用类型 在编写pl/sql语句时,如果需要用到变量,那么就需要在定义部分定义变量.pl/sql中定义变量个常量的语

PL/SQL编程_变量

在PL/SQL块中可以定义变量和数据类型,这使得PL/SQL块对数据的处理更加灵活. 变量和类型的定义放在PL/SQL块的变量声明部分. 变量的定义与使用 变量的定义有两种格式,分别为:变量名 类型 [约束][DEFAULT 默认值]变量名 类型[约束][:=初始值]其中用方括号限定的部分是可选的. 约束用来规定变量必须满足的条件,比如“ NOTNULL”约束指定变量不能为空值,这样在定义变量的时候就要为其指定初始值或默认值.变量名要遵守一定的命名规则. 变量名必须以字母开头,包含数字.字母.下

SQL Server 表变量和临时表的区别

一.表变量 表变量在SQL Server 2000中首次被引入.表变量的具体定义包括列定义,列名,数据类型和约束.而在表变量中可以使用的约束包括主键约束,唯一约束,NULL约束和CHECK约束(外键约束不能在表变量中使用).定义表变量的语句是和正常使用Create Table定义表语句的子集.只是表变量通过DECLARE @local_variable语句进行定义. 表变量的特征: 表变量拥有特定作用域(在当前批处理语句中,但不在任何当前批处理语句调用的存储过程和函数中),表变量在批处理结束后自

sql server 表变量存储临时查询数据

对于使用sql server 编写存储过程或者类似的sql 查询的时候我们使用表变量进行临时数据的存储,可以方便我们进行下来的数据处理 表变量的使用类似如下: declare @userinfo table(id nvarchar(50),name nvarchar(50)); insert into @userinfo(id,name) select classid,classname from classfirstselect * from @userinfo 以上的操作就是进行查询clas

[转]SQL Server 表变量和临时表的区别

一.表变量 表变量在SQL Server 2000中首次被引入.表变量的具体定义包括列定义,列名,数据类型和约束.而在表变量中可以使用的约束包括主键约束,唯一约束,NULL约束和CHECK约束(外键约束不能在表变量中使用).定义表变量的语句是和正常使用Create Table定义表语句的子集.只是表变量通过DECLARE @local_variable语句进行定义. 表变量的特征: 表变量拥有特定作用域(在当前批处理语句中,但不在任何当前批处理语句调用的存储过程和函数中),表变量在批处理结束后自

动态SQL、绑定变量、静态SQL的性能对比

1.测试样例 下面的三个存储过程,分别使用了动态SQL.绑定变量.静态SQL三种编程方式.具体存储过程内容如下: 1)动态SQL create or replace procedure proc1 as begin for i in 1 .. 100000 loop execute immediate 'insertinto t values (' || i || ')'; commit; end loop; end proc1; 2)绑定变量 create or replace procedu

SQL*Plus环境变量设置浅析

SQL*Plus的使用环境是可以通过login.sql 或 glogin.sql脚本来设置的,可能很多初学者或不习惯使用SQL*Plus的老鸟都不知道.因为在如今UI工具(Toad.PL/SQL Developer..)大行其道的年代,SQL*Plus这种命令工具渐渐被冷落了,可能只是偶尔被用用,不过这并不妨碍它被很多DBA或SQL*Plus爱好者广泛使用. 其中glogin.sql文件是全局设置文件,位于$ORACLE_HOME/sqlplus/admin下,而login.sql文件属于个性化