sql定义变量赋值
⑴ sql server2005中如何定义变量,如何给变量赋值
Sqlserver中存可以定义
:全局变量 DECLARE @@变量名 类型
:局部变量 DECLARE @变量名 类型
赋值方式:
--一. SET赋值
DECLARE @Name varchar(50),@@Name varchar(50)
SET @Name='局部张三'
SET @@Name='全局张三'
SELECT @@Name+' '+@Name
--二. SELECT 赋值
DECLARE @Name varchar(50),@@Name varchar(50)
SELECT @Name='局部张三',@@Name='全局张三'
SELECT @@Name+' '+@Name
--顺便说下
--1.变量的作用域是有限的
--2.进行变量操作,需初始化
DECLARE @Name varchar(50)
--SET @Name=''
SET @Name = @Name+'张三'
SELECT @Name --结果将为NULL
--3.变量也是存在表变量,表变量与物理表存在一定区别
表变量与物理表存在一定区别 可以自己找点资料
希望对你有帮助
⑵ Sql中如何给变量赋值
/*
Sql server 存储过程中怎么将变量赋值
*/
--SQL赋值语句
DECLARE @test1 INT
SELECT @test1 = 111
SET @test1 = 222
--SQL函数赋值,假定count()是自定义函数
DECLARE @test2 INT
SELECT @test2 = COUNT(*) FROM sys.sysobjects
--SQL存储过程赋值,直接传参处理(类似C语言中的指针吗)
IF OBJECT_ID('sp_test') IS NOT NULL DROP PROCEDURE sp_test
GO
CREATE PROCEDURE sp_test(@test INT OUTPUT)
AS
BEGIN
SELECT @test = 999
GO
DECLARE @test3 INT
EXEC sp_test @test3 OUTPUT
SELECT @test3
DROP PROCEDURE sp_test
GO
⑶ Sql中如何给变量赋值
DECLARE @n1 int,@n2 varchar(10)
set @n1 =(select age from table where column=xxx)
set @n2=(select gender from table where column = xxx )
------------------
或者一起赋值
就是楼上那个
DECLARE @n1 int,@n2 varchar(10)
select @n1 =age,@n2=gender
from table where column = xxx
------------------
select @n1,@n2 就知道变量的值了
⑷ Sql server 存储过程中怎么将变量赋值
/*
Sql server 存储过程中怎么将变量赋值
*/
--SQL赋值语句
DECLARE @test1 INT
SELECT @test1 = 111
SET @test1 = 222
--SQL函数赋值,假定count()是自定义函数
DECLARE @test2 INT
SELECT @test2 = COUNT(*) FROM sys.sysobjects
--SQL存储过程赋值,直接传参处理(类似C语言中的指针吗)
IF OBJECT_ID('sp_test') IS NOT NULL DROP PROCEDURE sp_test
GO
CREATE PROCEDURE sp_test(@test INT OUTPUT)
AS
BEGIN
SELECT @test = 999
END
GO
DECLARE @test3 INT
EXEC sp_test @test3 OUTPUT
SELECT @test3
DROP PROCEDURE sp_test
GO
⑸ mysql 存储过程中变量的定义与赋值操作
一、变量的定义
mysql中变量定义用declare来定义一局部变量,该变量的使用范围只能在begin...end
块中使用,变量必须定义在复合语句的开头,并且是在其它语句之前,也可以同时申明多个变量,如果需要,可以使用default赋默认值。
定义一个变量语法如下:
declare
var_name[,...]
type[default
value]看一个变量定义实例
declare
last
date;二、mysql存储过程变量赋值
变量的赋值可直接赋值与查询赋值来操作,直接赋值可以用set来操作,可以是常量或表达式如果下
复制代码
代码如下:
set
var_name=
[,var_name
expr]...给上面的last变量赋值方法如下
set
last
=
date_sub(
current_date(),interval
1
month);下面看通过查询给变量赋值,要求查询返回的结果必须为一行,具体操作如下
select
col
into
var_name[,...]
table_expr我们来通过查询给v_pay赋值。
create
function
get
_cost(p_custid
int,p_eff
datetime)
return
decimal(5,2)
deterministic
reads
sql
data
begin
declare
v_pay
decimail(5,2);
select
ifnull(
sum(pay.amount),0)
into
vpay
from
payment
where
pay.payd<=p_eff
and
pay.custid=pid
reutrn
v_rent
+
v_over
-
v_pay;
end
$$
好了,这篇简单的存储过程中变量的定义赋值教程就到这里了,下面我们会接着讲关于myql存储过程的条件的定义与处理。
以下是其它网友的补充
在MySQL的存储过程中,可以使用变量,它用于保存处理过程中的值。
定义变量使用DECLARE语句,语法格式如下:
DECLARE
var_name[,...]
type
[DEFAULT
value]
其中,var_name为变量名称,type为MySQL支持的任何数据类型,可选项[DEFAULT
value]为变量指定默认值。一次可以定义多个同类型的变量,各变量名称之间以逗号“,”隔开。
定义与使用变量时需要注意以下几点:
◆
DECLARE语句必须用在DEGIN…END语句块中,并且必须出现在DEGIN…END语句块的最前面,即出现在其他语句之前。
◆
DECLARE定义的变量的作用范围仅限于DECLARE语句所在的DEGIN…END块内及嵌套在该块内的其他DEGIN…END块。
◆
存储过程中的变量名不区分大小写。
定义后的变量采用SET语句进行赋值,语法格式如下:
SET
var_name
=
expr
[,var_name
=
expr]
...
其中,var_name为变量名,expr为值或者返回值的表达式,可以使任何MySQL支持的返回值的表达式。一次可以为多个变量赋值,多个“变量名=值”对之间以逗号“,”隔开。
例如:
复制代码
代码如下:
begin
declare
no
varchar(20);
declare
title
varchar(30);
set
no='101010',title='存储过程中定义变量与赋值';
end
提示:存储过程中所有的关键字也是不区分大小写的,如BEGIN可以写出begin。
⑹ sql 变量赋值
你的要求不合乎逻辑:
1、要求统计前10条记录的数量,那么得出的就是一个值,也就是前10条记录的总数量,用sum(Qty)没错;
2、要求按批号排序,在满足要求1的情况下得出的结果只有1个,1个结果又如何排序?
修改建议:
1、修改要求1,select qty,BatchNo from A order by BatchNo
2、修改要求2,select sum(Qty) from A
这2种结果是不同的,如果非要一句获取2个结果,可通过union实现
⑺ mysql环境中,如何用sql语句给字符串变量赋值
mysql给字符串变量赋值的方法是用select into 变量结构完成赋值。
使用sql的结构语法:
SELECT ... INTO var_list selects column values and stores them into variables.
比如定义一个sql变量:
@x varchar(10);
@y varchar(20);
select id,name INTO @x,@y from dx_tt
这样就完成了赋值。
⑻ SQL触发器中怎么给变量赋值
declare @Cnumber int;----销售商品的数量
declare @Cid varchar(50);----库存里面商品的ID
--给需要减少的商品的数量赋一个初始值,确保在重新赋值时不会出错
SET @Cnumber = 0
--给商品的编号赋赋一个初始值
SET @Cid = '1'
--如果不赋个初始值,在从inserted中获取并赋值时会出现值为NULL的情况
--获取需要减少的商品的数量和商品的编号
SELECT @Cnumber = Cnumber,@Cid = Cid FROM inserted
--接下来的更新操作就是按照你原来的去更新就行了
update Commodity---商品库存 set Cnumber=Cnumber-@Cnumber where Cid=@Cid
--也可以这样更新
UPDATE Commodity SET Cnumber = Cnumber - Cnumber
FROM
Commodity AS T
INNER JOIN
inserted AS T1
ON
T.Cid = T1.Cid
--这样可以批量更新,那么针对一条数据进行更新是没问题的,同事也省去了声明变量一级变量赋值的步骤
⑼ 用SQL语句编写:定义两个变量并赋值,要求输出较小的那个值。
set @a=1,@b=2;
select @a,@b,(case
when @a<@b then @a
when @b<@a then @b
when @b=@a then '=='
end);
⑽ sql server 中select set 对变量赋值
declare @a as varchar(10);
定义变量之后可以使用
set @a = 'xxx'
或者
select @a = max(col1) from T1
来给变量赋值
但是后面的查询如果返回多条数据的话会出错
必须是返回一个标量的查询,例如使用函数max min count等等
如果想循环取值的话,请使用游标循环读取。