DECLARE PRIMARY_KEY VARCHAR(100);
成都創(chuàng)新互聯(lián)公司長期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為天津企業(yè)提供專業(yè)的網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè),天津網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
SET PRIMARY_KEY = group_concat(NEW.USER_ID,NEW.ROLE_NAME);
查詢語句是這樣寫的:
select group_concat(NEW.USER_ID,NEW.ROLE_NAME)from NEW where 條件;
SELECT group_concat(NEW.USER_ID,NEW.ROLE_NAME separator '連接字符') FROM NEW where 條件;
關(guān)系型數(shù)據(jù)庫第一范式就說明了:
數(shù)據(jù)表中的每一列(字段),必須是不可拆分的最小單元,也就是確保每一列的原子性。
所以一個字段存多個值是不可能的。
當(dāng)然可以把多個值序列化成一個字符串或者二進(jìn)制保存到一個字段,比如字符串"作者1,作者2,作者3",但這樣做也不是第一范式中所謂的多個值,只算一個值,并且對以后的細(xì)劃查詢也不方便,比如查作者信息,肯定不只是一個作者名啊。
所以一般設(shè)計上會有明細(xì)表,外鍵關(guān)系關(guān)聯(lián)。
有一個book表,記錄書的信息;
再有一個author表,記錄作者信息,此表中有一個字段作外鍵引用book表的書id。
這樣查詢書有什么作者的時候只需要兩個表外鍵join就行了。
打開結(jié)果集 用游標(biāo)循環(huán)取值,
1
2
3
4
5
6
7
8
9
10
11
12
$sql_str='select * from DEPARTMENTS where SUPDEPTID='.$SUPDEPTID.' order by DEPTID ';
$rs=$conn-Execute($sql_str);
echo "ok";
while(!$rs-eof){
$row_arr=array();
$row_arr['id']=$rs-fields["DEPTID"]-value;
$row_arr['text']=iconv( "gb2312", "UTF-8//IGNORE" , $rs-Fields['DEPTNAME']-value);
$row_arr['DEPTID']=$rs-fields["DEPTID"]-value;
$row_arr['DEPTNAME']=iconv( "gb2312", "UTF-8//IGNORE" , $rs-Fields['DEPTNAME']-value);
$row_arr['SUPDEPTID']=$rs-fields["SUPDEPTID"]-value;
$row_arr['UPDEPTNAME']=$UPDEPTNAME;
}
一、變量的定義
mysql中變量定義用declare來定義一局部變量,該變量的使用范圍只能在begin...end
塊中使用,變量必須定義在復(fù)合語句的開頭,并且是在其它語句之前,也可以同時申明多個變量,如果需要,可以使用default賦默認(rèn)值。
定義一個變量語法如下:
declare
var_name[,...]
type[default
value]看一個變量定義實例
declare
last
date;二、mysql存儲過程變量賦值
變量的賦值可直接賦值與查詢賦值來操作,直接賦值可以用set來操作,可以是常量或表達(dá)式如果下
復(fù)制代碼
代碼如下:
set
var_name=
[,var_name
expr]...給上面的last變量賦值方法如下
set
last
=
date_sub(
current_date(),interval
1
month);下面看通過查詢給變量賦值,要求查詢返回的結(jié)果必須為一行,具體操作如下
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
$$
好了,這篇簡單的存儲過程中變量的定義賦值教程就到這里了,下面我們會接著講關(guān)于myql存儲過程的條件的定義與處理。
以下是其它網(wǎng)友的補(bǔ)充
在MySQL的存儲過程中,可以使用變量,它用于保存處理過程中的值。
定義變量使用DECLARE語句,語法格式如下:
DECLARE
var_name[,...]
type
[DEFAULT
value]
其中,var_name為變量名稱,type為MySQL支持的任何數(shù)據(jù)類型,可選項[DEFAULT
value]為變量指定默認(rèn)值。一次可以定義多個同類型的變量,各變量名稱之間以逗號“,”隔開。
定義與使用變量時需要注意以下幾點:
◆
DECLARE語句必須用在DEGIN…END語句塊中,并且必須出現(xiàn)在DEGIN…END語句塊的最前面,即出現(xiàn)在其他語句之前。
◆
DECLARE定義的變量的作用范圍僅限于DECLARE語句所在的DEGIN…END塊內(nèi)及嵌套在該塊內(nèi)的其他DEGIN…END塊。
◆
存儲過程中的變量名不區(qū)分大小寫。
定義后的變量采用SET語句進(jìn)行賦值,語法格式如下:
SET
var_name
=
expr
[,var_name
=
expr]
...
其中,var_name為變量名,expr為值或者返回值的表達(dá)式,可以使任何MySQL支持的返回值的表達(dá)式。一次可以為多個變量賦值,多個“變量名=值”對之間以逗號“,”隔開。
例如:
復(fù)制代碼
代碼如下:
begin
declare
no
varchar(20);
declare
title
varchar(30);
set
no='101010',title='存儲過程中定義變量與賦值';
end
提示:存儲過程中所有的關(guān)鍵字也是不區(qū)分大小寫的,如BEGIN可以寫出begin。