MySQL存儲過程中,定義變量有兩種方式:
創(chuàng)新互聯(lián)于2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元安化做網(wǎng)站,已為上家服務(wù),為安化各地企業(yè)和個人服務(wù),聯(lián)系電話:028-86922220
? 1、使用set或select直接賦值,變量名以@開頭,可以在一個會話(即連接)的任何地方聲明,作用域是整個會話,稱為用戶變量。例如:set @var=1;
? 2、 以declare關(guān)鍵字聲明的變量,只能在存儲過程中使用,稱為存儲過程變量,主要用在存儲過程中,或者是給存儲傳參數(shù)中。例如: declare var1 int default 0;
兩者的區(qū)別是:
? ? 在調(diào)用存儲過程時,以declare聲明的變量都會被初始化為null。而會話變量(即@開頭的變量)則不會被再初始化,在一個會話(連接)內(nèi),只須初始化一次,之后在會話內(nèi)都是對上一次計(jì)算的結(jié)果,就相當(dāng)于在是這個會話內(nèi)的全局變量。
CREATE FUNCTION `fristPinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8
BEGIN
DECLARE V_RETURN VARCHAR(255);
SET V_RETURN = ELT(INTERVAL(CONV(HEX(left(CONVERT(P_NAME USING gbk),1)),16,10),
0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7,
0xBFA6,0xC0AC,0xC2E8,0xC4C3,0xC5B6,0xC5BE,0xC6DA,0xC8BB,
0xC8F6,0xCBFA,0xCDDA,0xCEF4,0xD1B9,0xD4D1),
'A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z');
RETURN V_RETURN;
END
pinyin :此函數(shù)是將一個中文字符串對應(yīng)拼音母的每個相連 (例如:"中國人"-ZGR)
復(fù)制代碼 代碼如下:
CREATE FUNCTION `pinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8
BEGIN
DECLARE V_COMPARE VARCHAR(255);
DECLARE V_RETURN VARCHAR(255);
DECLARE I INT;
SET I = 1;
SET V_RETURN = '';
while I LENGTH(P_NAME) do
SET V_COMPARE = SUBSTR(P_NAME, I, 1);
IF (V_COMPARE != '') THEN
#SET V_RETURN = CONCAT(V_RETURN, ',', V_COMPARE);
SET V_RETURN = CONCAT(V_RETURN, fristPinyin(V_COMPARE));
#SET V_RETURN = fristPinyin(V_COMPARE);
END IF;
SET I = I + 1;
end while;
IF (ISNULL(V_RETURN) or V_RETURN = '') THEN
SET V_RETURN = P_NAME;
END IF;
RETURN V_RETURN;
END
示例:
復(fù)制代碼 代碼如下:
mysql select p.province, fristPinyin(p.province), pinyin(p.province) from province p;
+------------------+-------------------------+--------------------+
| province | fristPinyin(p.province) | pinyin(p.province) |
+------------------+-------------------------+--------------------+
| 北京市 | B | BJS |
| 天津市 | T | TJS |
| 河北省 | H | HBS |
| 山西省 | S | SXS |
| 內(nèi)蒙古自治區(qū) | N | NMGZZQ |
+------------------+-------------------------+--------------------+
5 rows in set
沒試過往里面?zhèn)鲾?shù)組,一般都是多傳幾個參數(shù),把幾個參數(shù)放入SqlParameter[]中,然后cmd.Parameters.AddRange(pars);
創(chuàng)建方法:
SqlParameter[] paras = new SqlParameter[]
{
new SqlParameter("@PageIndex","ccc"),
new SqlParameter("@PageSize","ccc"),
new SqlParameter("@StrSql","ccc")
};
ccc就是你想傳入的值,帶@的就是你在存儲過程中定義的參數(shù)。
算是一種另類的數(shù)組吧。要不你就把所有條件組合成一個字符串,中間用特殊符號隔開,到數(shù)據(jù)庫用split方法再分回來,不過這個方法比較麻煩,不推薦
set @1=XXX這樣的只能用來定義MySQL連接中的session參數(shù),如果你要定義變量為表名的話可以寫在存儲過程中 望采納
當(dāng)前題目:mysql怎么傳參數(shù)類型,mysql 傳參
當(dāng)前鏈接:http://jinyejixie.com/article46/hopdhg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、網(wǎng)站設(shè)計(jì)、響應(yīng)式網(wǎng)站、營銷型網(wǎng)站建設(shè)、網(wǎng)站收錄、虛擬主機(jī)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)