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等等
如果想循環取值的話,請使用游標循環讀取。