1. 程式人生 > >mysql 儲存過程寫法以及函式說明

mysql 儲存過程寫法以及函式說明

create PROCEDURE proc_insertYJMX(
in_ptzf varchar(1000),  -- 普通罪犯編號 如1,2,2,3,最後要拼接一個逗號
in_tgzf varchar(1000),  -- 特崗罪犯編號 如1,2,2,3,最後要拼接一個逗號
in_ywuuid varchar(64),  -- 業務表uuid
in_lylx varchar(32),    -- 來源型別 (中文即可 違規事件、隱患排查、情報收集)
in_yzuuid varchar(1000), -- 因子uuid 如1,2,3, 最後要拼接一個逗號
in_tbr varchar(32)   -- 填報人賬號 如 admin
)BEGIN
		
		DECLARE v_zfbh VARCHAR(32);
		DECLARE v_yzuuid VARCHAR(64);
		DECLARE v_yzs VARCHAR(1000);  
		DECLARE v_zfxm VARCHAR(64);  -- 罪犯姓名
		DECLARE v_zfdb VARCHAR(64);   -- 罪犯對別
		DECLARE v_current_date datetime;  -- 當前時間
		
		-- 以下幾個定義的引數,用於插入彙總表使用
		DECLARE v_zfbhs VARCHAR(1000); -- 所有罪犯編號的集合
		DECLARE v_yzlb VARCHAR(500); -- 因子類別的中文集合
		DECLARE v_yzms VARCHAR(2000); -- 因子描述的中文集合
		DECLARE v_fz double; -- 分值
		DECLARE v_yjxxyz double; -- 預警資訊閾值
		DECLARE v_yjxx_uuid VARCHAR(32); -- 預警資訊表的uuid


		set v_current_date = SYSDATE();
		set v_zfbhs = CONCAT( IFNULL(in_ptzf, ''), IFNULL(in_tgzf, '') ); -- 獲得本次傳入的所有罪犯編號

		-- 1、先判斷此業務主鍵是否在預警明細中已有資料,如果有先做刪除,這樣判斷比較麻煩,因為每次都要插入,所以可以不做判斷,直接刪除
		-- delete from  t_qbxx_yjmx  where yj_yw_uuid = in_ywuuid; -- 此程式碼註釋掉了,因為只有新增的時候才呼叫,修改的時候不呼叫了

		-- 2、開始插入資料,先插入普通罪犯 3312064560,3312064560,3312064560,3312064560,3312064560
		WHILE INSTR (in_ptzf, ',')  != 0 DO
			set v_zfbh = SUBSTR(in_ptzf, 1, INSTR (in_ptzf, ',') - 1) ;
			set in_ptzf = SUBSTR(in_ptzf, INSTR(in_ptzf, ',') + 1 , length(in_ptzf) ) ;
			set v_yzs = in_yzuuid;
			
			-- 獲取罪犯姓名和對別
			select pr_name, pr_areacode into v_zfxm, v_zfdb  from fcp_prisoner where pr_number = v_zfbh;

			-- 迴圈因子
			WHILE INSTR (v_yzs, ',')  != 0 DO
				set v_yzuuid = SUBSTR(v_yzs, 1, INSTR (v_yzs, ',') - 1) ;
				set v_yzs = SUBSTR(v_yzs, INSTR(v_yzs, ',') + 1 , length(v_yzs) ) ;
				
				insert into t_qbxx_yjmx(yj_uuid, yj_zfname, yj_zfbh, yj_zfdb, yj_yw_uuid, yj_lylx, yj_zflx, yj_yzname, yj_yzid, yj_fz, yj_fl, yj_isremove, yj_tbtime, yj_tbuser)
				select REPLACE(uuid(), '-',''), v_zfxm, v_zfbh, v_zfdb,in_ywuuid,in_lylx ,'1', yjyz_yz, yjyz_uuid, yjyz_fz, yjyz_lb, '否', v_current_date, in_tbr
				from t_qbxx_yjyz where yjyz_uuid = v_yzuuid;

			END WHILE;
		END WHILE;

		-- 3、開始插入資料,其實邏輯也普通罪犯邏輯是一樣的,只是偷懶就沒有做判斷,複製了一遍程式碼而已
		WHILE INSTR (in_tgzf, ',')  != 0 DO
			set v_zfbh = SUBSTR(in_tgzf, 1, INSTR (in_tgzf, ',') - 1) ;
			set in_tgzf = SUBSTR(in_tgzf, INSTR(in_tgzf, ',') + 1 , length(in_tgzf) ) ;
			set v_yzs = in_yzuuid;
			
			-- 獲取罪犯姓名和對別
			select pr_name, pr_areacode into v_zfxm, v_zfdb  from fcp_prisoner where pr_number = v_zfbh;

			-- 迴圈因子
			WHILE INSTR (v_yzs, ',')  != 0 DO
				set v_yzuuid = SUBSTR(v_yzs, 1, INSTR (v_yzs, ',') - 1) ;
				set v_yzs = SUBSTR(v_yzs, INSTR(v_yzs, ',') + 1 , length(v_yzs) ) ;
				
				insert into t_qbxx_yjmx(yj_uuid, yj_zfname, yj_zfbh, yj_zfdb, yj_yw_uuid, yj_lylx, yj_zflx, yj_yzname, yj_yzid, yj_fz, yj_fl, yj_isremove, yj_tbtime, yj_tbuser)
				select REPLACE(uuid(), '-',''), v_zfxm, v_zfbh, v_zfdb,in_ywuuid,in_lylx ,'2', yjyz_yz, yjyz_uuid, yjyz_fz, yjyz_lb, '否', v_current_date, in_tbr
				from t_qbxx_yjyz where yjyz_uuid = v_yzuuid;

			END WHILE;
		END WHILE;
		

		-- 4、先獲取每個罪犯,然後根據每個罪犯去統計預警明細表中統計未解除的資料的總分,
    -- 如果總分超過 系統引數配置模組YJXXYZ(預警資訊閾值) 配置的值,如10分,
    -- 並且此罪犯在預警資訊表中不存在記錄,那麼就插入預警資訊表
    -- 如果在預警資訊表中存在記錄,那麼只更新預警明細表中的的外來鍵uuid
		select  CONVERT(SP_VALUE, DECIMAL) into v_yjxxyz from jfp_sysparam where sp_name = 'YJXXYZ'; -- 獲取預警資訊閾值

		WHILE INSTR (v_zfbhs, ',')  != 0 DO
			set v_zfbh = SUBSTR(v_zfbhs, 1, INSTR (v_zfbhs, ',') - 1) ;
			set v_zfbhs = SUBSTR(v_zfbhs, INSTR(v_zfbhs, ',') + 1 , length(v_zfbhs) ) ;
			
			-- 統計此罪犯的未解除的分值以及 因子彙總和分類彙總(並且去除重複專案)
			select    yj_zfname
							, group_concat(distinct yj_yzname  Separator '| ')  
							, group_concat(  distinct (select CRDCT_NAME jfp_core_dict from jfp_core_dict 
									where CRDCT_PARENT_UNID = (select c.CRDCT_unid from jfp_core_dict c where c.CRDCT_CHAR_CODE = 'YJYZLB') 
									and CRDCT_CHAR_CODE =  yj_fl)  Separator '| ' ) 
							, sum(yj_fz) as fz
							into v_zfxm, v_yzms, v_yzlb, v_fz
				from t_qbxx_yjmx 
			where yj_zfbh = v_zfbh 
			and yj_isremove = '否'
			group by  yj_zfbh, yj_zfname;

			-- 如果罪犯觸發的因子彙總大於閾值,並且彙總表(t_qbxx_yjxx表)沒有資料,直接插入,否則修改
			IF v_fz >= v_yjxxyz THEN 
				select max(v_yjxx_uuid)  into v_yjxx_uuid from t_qbxx_yjxx where yjxx_zfbh = v_zfbh and yjxx_zt = '否';

				IF (v_yjxx_uuid != null and  v_yjxx_uuid != '') THEN -- 彙總表已經有資料,此罪犯已經有預警資訊
							update t_qbxx_yjxx set yjxx_fz = v_fz, yjxx_yzms = v_yzms,  yjxx_yzlb = v_yzlb where  yjxx_uuid = v_yjxx_uuid;
							
							-- 修改所有未解除的預警明細資料,吧預警明細的外來鍵修改為彙總表的uuid
							update t_qbxx_yjmx set yj_yjxx_uuid = v_yjxx_uuid   where yj_zfbh = v_zfbh  and yj_isremove = '否' ;

				ELSE  -- 無資料,直接插入彙總表
							SET v_yjxx_uuid = REPLACE(uuid(), '-','');
							
							-- 插入預警資訊表
							insert into t_qbxx_yjxx (yjxx_uuid,yjxx_zfbh,yjxx_zfxm,yjxx_fz, yjxx_yjsj, yjxx_zt, yjxx_yzms, yjxx_yzlb)
							values(v_yjxx_uuid, v_zfbh, v_zfxm, v_fz, v_current_date, '否', v_yzms, v_yzlb);

							-- 修改所有未解除的預警明細資料,吧預警明細的外來鍵修改為彙總表的uuid
							update t_qbxx_yjmx set yj_yjxx_uuid = v_yjxx_uuid   where yj_zfbh = v_zfbh  and yj_isremove = '否' ;
		
				END IF ;
									
			END IF ;
			
		END WHILE;
 
 
END

 

儲存過程如同一門程式設計語言,同樣包含了資料型別、流程控制、輸入和輸出和它自己的函式庫。


--------------------基本語法--------------------

一.建立儲存過程
create procedure sp_name()
begin
.........
end

二.呼叫儲存過程
1.基本語法:call sp_name()
注意:儲存過程名稱後面必須加括號,哪怕該儲存過程沒有引數傳遞

三.刪除儲存過程
1.基本語法:
drop procedure sp_name//

2.注意事項
(1)不能在一個儲存過程中刪除另一個儲存過程,只能呼叫另一個儲存過程

四.其他常用命令

1.show procedure status
顯示資料庫中所有儲存的儲存過程基本資訊,包括所屬資料庫,儲存過程名稱,建立時間等

2.show create procedure sp_name
顯示某一個MySQL儲存過程的詳細資訊


--------------------資料型別及運算子--------------------
一、基本資料型別:

二、變數:

自定義變數:DECLARE   a INT ; SET a=100;    可用以下語句代替:DECLARE a INT DEFAULT 100;

變數分為使用者變數系統變數,系統變數又分為會話和全域性級變數

使用者變數:使用者變數名一般以@開頭,濫用使用者變數會導致程式難以理解及管理

1、 在mysql客戶端使用使用者變數
mysql> SELECT 'Hello World' into @x;
mysql> SELECT @x;

mysql> SET @y='Goodbye Cruel World';
mysql> select @y;

mysql> SET @z=1+2+3;
mysql> select @z;


2、 在儲存過程中使用使用者變數

mysql> CREATE PROCEDURE GreetWorld( ) SELECT CONCAT(@greeting,' World');
mysql> SET @greeting='Hello';
mysql> CALL GreetWorld( );


3、 在儲存過程間傳遞全域性範圍的使用者變數
mysql> CREATE PROCEDURE p1( )   SET @last_procedure='p1';
mysql> CREATE PROCEDURE p2( ) SELECT CONCAT('Last procedure was ',@last_procedure);
mysql> CALL p1( );
mysql> CALL p2( );

三、運算子:
1.算術運算子
+     加   SET var1=2+2;       4
-     減   SET var2=3-2;       1
*      乘   SET var3=3*2;       6
/     除   SET var4=10/3;      3.3333
DIV   整除 SET var5=10 DIV 3; 3
%     取模 SET var6=10%3 ;     1

2.比較運算子
>            大於 1>2 False
<            小於 2<1 False
<=           小於等於 2<=2 True
>=           大於等於 3>=2 True
BETWEEN      在兩值之間 5 BETWEEN 1 AND 10 True
NOT BETWEEN 不在兩值之間 5 NOT BETWEEN 1 AND 10 False
IN           在集合中 5 IN (1,2,3,4) False
NOT IN       不在集合中 5 NOT IN (1,2,3,4) True
=             等於 2=3 False
<>, !=       不等於 2<>3 False
<=>          嚴格比較兩個NULL值是否相等 NULL<=>NULL True
LIKE          簡單模式匹配 "Guy Harrison" LIKE "Guy%" True
REGEXP       正則式匹配 "Guy Harrison" REGEXP "[Gg]reg" False
IS NULL      為空 0 IS NULL False
IS NOT NULL 不為空 0 IS NOT NULL True

3.邏輯運算子

4.位運算子
|   或
&   與
<< 左移位
>> 右移位
~   非(單目運算,按位取反)

註釋:

mysql儲存過程可使用兩種風格的註釋
雙橫槓:--

該風格一般用於單行註釋
c風格:/* 註釋內容 */ 一般用於多行註釋

--------------------流程控制--------------------
一、順序結構
二、分支結構
if
case

三、迴圈結構
for迴圈
while迴圈
loop迴圈
repeat until迴圈

注:
區塊定義,常用
begin
......
end;
也可以給區塊起別名,如:
lable:begin
...........
end lable;
可以用leave lable;跳出區塊,執行區塊以後的程式碼

begin和end如同C語言中的{ 和 }。

--------------------輸入和輸出--------------------

mysql儲存過程的引數用在儲存過程的定義,共有三種引數型別,IN,OUT,INOUT
Create procedure|function([[IN |OUT |INOUT ] 引數名 資料類形...])

IN 輸入引數
表示該引數的值必須在呼叫儲存過程時指定,在儲存過程中修改該引數的值不能被返回,為預設值

OUT 輸出引數
該值可在儲存過程內部被改變,並可返回

INOUT 輸入輸出引數
呼叫時指定,並且可被改變和返回

IN引數例子:
CREATE PROCEDURE sp_demo_in_parameter(IN p_in INT)
BEGIN
SELECT p_in; --查詢輸入引數
SET p_in=2; --修改
select p_in;--檢視修改後的值
END;

執行結果:
mysql> set @p_in=1
mysql> call sp_demo_in_parameter(@p_in)

mysql> select @p_in;

以上可以看出,p_in雖然在儲存過程中被修改,但並不影響@p_id的值

OUT引數例子
建立:
mysql> CREATE PROCEDURE sp_demo_out_parameter(OUT p_out INT)
BEGIN
SELECT p_out;/*檢視輸出引數*/
SET p_out=2;/*修改引數值*/
SELECT p_out;/*看看有否變化*/
END;

執行結果:
mysql> SET @p_out=1
mysql> CALL sp_demo_out_parameter(@p_out)

mysql> SELECT @p_out;

INOUT引數例子:
mysql> CREATE PROCEDURE sp_demo_inout_parameter(INOUT p_inout INT)
BEGIN
SELECT p_inout;
SET p_inout=2;
SELECT p_inout;
END;

執行結果:
set @p_inout=1
call sp_demo_inout_parameter(@p_inout) //

select @p_inout;

附:函式庫
mysql儲存過程基本函式包括:字串型別,數值型別,日期型別

一、字串類
CHARSET(str) //返回字串字符集
CONCAT (string2 [,… ]) //連線字串
INSTR (string ,substring ) //返回substring首次在string中出現的位置,不存在返回0
LCASE (string2 ) //轉換成小寫
LEFT (string2 ,length ) //從string2中的左邊起取length個字元
LENGTH (string ) //string長度
LOAD_FILE (file_name ) //從檔案讀取內容
LOCATE (substring , string [,start_position ] ) 同INSTR,但可指定開始位置
LPAD (string2 ,length ,pad ) //重複用pad加在string開頭,直到字串長度為length
LTRIM (string2 ) //去除前端空格
REPEAT (string2 ,count ) //重複count次
REPLACE (str ,search_str ,replace_str ) //在str中用replace_str替換search_str
RPAD (string2 ,length ,pad) //在str後用pad補充,直到長度為length
RTRIM (string2 ) //去除後端空格
STRCMP (string1 ,string2 ) //逐字元比較兩字串大小,
SUBSTRING (str , position [,length ]) //從str的position開始,取length個字元,
注:mysql中處理字串時,預設第一個字元下標為1,即引數position必須大於等於1
mysql> select substring(’abcd’,0,2);
+———————–+
| substring(’abcd’,0,2) |
+———————–+
|                       |
+———————–+
1 row in set (0.00 sec)

mysql> select substring(’abcd’,1,2);
+———————–+
| substring(’abcd’,1,2) |
+———————–+
| ab                    |
+———————–+
1 row in set (0.02 sec)

TRIM([[BOTH|LEADING|TRAILING] [padding] FROM]string2) //去除指定位置的指定字元
UCASE (string2 ) //轉換成大寫
RIGHT(string2,length) //取string2最後length個字元
SPACE(count) //生成count個空格

二、數值型別

ABS (number2 ) //絕對值
BIN (decimal_number ) //十進位制轉二進位制
CEILING (number2 ) //向上取整
CONV(number2,from_base,to_base) //進位制轉換
FLOOR (number2 ) //向下取整
FORMAT (number,decimal_places ) //保留小數位數
HEX (DecimalNumber ) //轉十六進位制
注:HEX()中可傳入字串,則返回其ASC-11碼,如HEX(’DEF’)返回4142143
也可以傳入十進位制整數,返回其十六進位制編碼,如HEX(25)返回19
LEAST (number , number2 [,..]) //求最小值
MOD (numerator ,denominator ) //求餘
POWER (number ,power ) //求指數
RAND([seed]) //隨機數
ROUND (number [,decimals ]) //四捨五入,decimals為小數位數]

注:返回型別並非均為整數,如:

(1)預設變為整形值
mysql> select round(1.23);
+————-+
| round(1.23) |
+————-+
|           1 |
+————-+
1 row in set (0.00 sec)

mysql> select round(1.56);
+————-+
| round(1.56) |
+————-+
|           2 |
+————-+
1 row in set (0.00 sec)

(2)可以設定小數位數,返回浮點型資料

mysql> select round(1.567,2);
+—————-+
| round(1.567,2) |
+—————-+
|           1.57 |
+—————-+
1 row in set (0.00 sec)

SIGN (number2 ) //返回符號,正負或0
SQRT(number2) //開平方

三、日期型別

ADDTIME (date2 ,time_interval ) //將time_interval加到date2
CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //轉換時區
CURRENT_DATE ( ) //當前日期
CURRENT_TIME ( ) //當前時間
CURRENT_TIMESTAMP ( ) //當前時間戳
DATE (datetime ) //返回datetime的日期部分
DATE_ADD (date2 , INTERVAL d_value d_type ) //在date2中加上日期或時間
DATE_FORMAT (datetime ,FormatCodes ) //使用formatcodes格式顯示datetime
DATE_SUB (date2 , INTERVAL d_value d_type ) //在date2上減去一個時間
DATEDIFF (date1 ,date2 ) //兩個日期差
DAY (date ) //返回日期的天
DAYNAME (date ) //英文星期
DAYOFWEEK (date ) //星期(1-7) ,1為星期天
DAYOFYEAR (date ) //一年中的第幾天
EXTRACT (interval_name FROM date ) //從date中提取日期的指定部分
MAKEDATE (year ,day ) //給出年及年中的第幾天,生成日期串
MAKETIME (hour ,minute ,second ) //生成時間串
MONTHNAME (date ) //英文月份名
NOW ( ) //當前時間
SEC_TO_TIME (seconds ) //秒數轉成時間
STR_TO_DATE (string ,format ) //字串轉成時間,以format格式顯示
TIMEDIFF (datetime1 ,datetime2 ) //兩個時間差
TIME_TO_SEC (time ) //時間轉秒數]
WEEK (date_time [,start_of_week ]) //第幾周
YEAR (datetime ) //年份
DAYOFMONTH(datetime) //月的第幾天
HOUR(datetime) //小時
LAST_DAY(date) //date的月的最後日期
MICROSECOND(datetime) //微秒
MONTH(datetime) //月
MINUTE(datetime) //分

注:可用在INTERVAL中的型別:DAY ,DAY_HOUR ,DAY_MINUTE ,DAY_SECOND ,HOUR ,HOUR_MINUTE ,HOUR_SECOND ,MINUTE ,MINUTE_SECOND,MONTH ,SECOND ,YEAR
DECLARE variable_name [,variable_name...] datatype [DEFAULT value]; 
其中,datatype為mysql的資料型別,如:INT, FLOAT, DATE, VARCHAR(length)

例:

DECLARE l_int INT unsigned default 4000000; 
DECLARE l_numeric NUMERIC(8,2) DEFAULT 9.95; 
DECLARE l_date DATE DEFAULT '1999-12-31'; 
DECLARE l_datetime DATETIME DEFAULT '1999-12-31 23:59:59';
DECLARE l_varchar VARCHAR(255) DEFAULT 'This will not be padded';

相關推薦

mysql 儲存過程寫法以及函式說明

create PROCEDURE proc_insertYJMX( in_ptzf varchar(1000), -- 普通罪犯編號 如1,2,2,3,最後要拼接一個逗號 in_tgzf varchar(1000), -- 特崗罪犯編號 如1,2,2,3,最後要拼

mysql儲存過程及部分函式

轉載,很詳細,就極其不要臉的轉過來儲存一下。點選檢視原文 儲存過程簡介 SQL語句需要先編譯然後執行,而儲存過程(Stored Procedure)是一組為了完成特定功能的SQL語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給定引數(如果該儲存過程帶有引數

MySQL儲存過程寫法總結

1、建立無參儲存過程。 create procedure product() begin         select * from user; end; 一條簡單的儲存過程建立語句,此時呼叫的語句為: call procedure(); ##注意,如果是在命令列下編寫的話

oracle的儲存過程寫法以及呼叫,各種遊標的介紹(靜態,動態,sys遊標的區別)

1、plsql下執行不帶引數的儲存過程      CALL  getDeptCount(); 2、plsql下執行帶引數的儲存過程DECLARE,必須使用程式碼段,並且可以列印其中的輸出引數 salary varchar2(100); BEGIN getSalaryByE

MySQL儲存過程常用的函式(字串型別操作,數學類,日期時間類)

ADDTIME (date2 ,time_interval ) //將time_interval加到date2CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //轉換時區CURRENT_DATE (  ) //當前日期CURRENT_TIME (  ) //當前時間CURRENT_

mysql 匯出匯入資料庫以及函式儲存過程

匯出函式: 用的最多的還是資料備份——全表匯出包括函式和儲存過程 1.單庫匯出 包括函式/檢視/儲存過程 mysqldump -hxxxx -uroot -pxxx -P3306 -R --default-character-set=utf8 hb > hb201

MySQL儲存過程函式的區別與優缺點

為什麼要使用儲存過程和函式 資料庫物件儲存過程和函式,是用來實現一組關於表操作的SQL語句程式碼當做一個整體來執行。一個完整的操作會包含多條SQL語句,在執行過程中需要根據前面的SQL語句來執行結果有選擇的執行後面的SQL語句。 儲存過程和函式可以簡單的理解為一條或多條SQL語句的集合

MySql儲存過程中傳參和不傳參以及java中呼叫程式碼

資料庫表結構 1.mysql不傳參寫儲存過程 create procedure product() -- product為儲存過程名稱 begin select * from book; end 呼叫此儲存過程為 CALL product

MySQL - - 【檢視】【觸發器】【儲存過程】【函式】【事物】【資料庫鎖】【資料庫備份】

目錄 檢視 觸發器 儲存過程 函式 事物 資料庫鎖 資料庫備份 1 檢視 檢視:是一個虛擬表,其內容由查詢定義。同真實的表一樣,檢視包含一系列帶有名稱的列和行資料 檢視有如下特點; 1 檢視的列可以來自不同的表,是表的抽象和邏輯意義上建立的新關

mysql儲存過程函式(一)

  儲存過程和函式是事先經過編譯並存儲在資料庫的一段sql語句集合,呼叫儲存過程和函式可以簡化應用程式開發人員的很多工作,減少資料在資料庫和應用伺服器之間的傳輸,對提高資料執行效率是有好處的。   儲存過程和函式的區別在於函式必須有返回值,而儲存過程卻沒有,儲存過程的引數可以使用IN,OUT,INOUT型別

從頭開始學MySQL-------儲存過程儲存函式(4)

儲存過程與儲存函式的補充 MySQL的儲存過程與儲存函式有什麼區別?         儲存函式只能通過return語句返回單個值或者表物件。         儲存過程不能用return,但是可

mysql 儲存過程函式中游標的使用

在儲存過程和函式中,可以使用游標對結果集進行迴圈的處理。 游標的使用包括游標的生命、OPEN、fetch、和close,其語法如下: 1、宣告游標:  declare 游標名 cursor for select_statement(查詢語句) 2、open游標: &nb

mysql儲存過程以及日誌和資料恢復

MySQL儲存過程 Mysql儲存過程是一組為了完成特定功能的SQL語句集,經過編譯之後儲存在資料庫中, 當需要使用該組SQL語句時使用者只需要通過指定儲存過程的名字並給定引數就可以呼叫執行它了 簡而言之就是一組已經寫好的命令,需要使用的時候拿出來用就可以了。 \d //(修改語句結

mysql儲存過程--建立表以及根據已有的表進行分表分庫

建立多表的儲存過程 /* -----------------------t_user分表SQL--------------------------------*/ drop PROCEDURE if exists import_user_data; create PROCEDURE

MySQL 儲存過程-原理、語法、函式詳細說明

Mysql儲存過程是一組為了完成特定功能的SQL語句集,經過編譯之後儲存在資料庫中,當需要使用該組SQL語句時使用者只需要通過指定儲存過程的名字並給定引數就可以呼叫執行它了,簡而言之就是一組已經寫好的命令,需要使用的時候拿出來用就可以了。想要快速的瞭解Mysql儲存過程嗎,就一同看一下下文的“Mys

mysql 儲存過程函式

  什麼是儲存過程和函式     儲存過程和函式是事先經過編譯儲存在資料庫中的一段 SQL語句的集合,呼叫儲存過程和函式可以簡化應用開發人員的很多工作,減少資料在資料庫和應用伺服器中的傳輸,對於提高資料處理的效率是有好處的。    

MySQL儲存過程中的3種迴圈,儲存過程的基本語法,ORACLE與MYSQL儲存過程/函式的使用區別,退出儲存過程方法

  學無止境 部落格園   首頁   新隨筆   聯絡   訂閱  管理 隨筆-1968  評論-103  文章-4&

MySQL 儲存過程函式

概述   一提到儲存過程可能就會引出另一個話題就是儲存過程的優缺點,這裡也不做討論。因為mysql中儲存過程和函式的語法非常接近所以就放在一起,主要區別就是函式必須有返回值(return),並且函式的引數只有IN型別而儲存過程有IN、OUT、INOUT這三種類型。  1.建立儲存過程和函式語法

oracle檢視包儲存過程函式以及儲存過程引數,函式引數

1. 今天檢視系統程式碼時意識到系統中有太多的包以及它們的引數實在太多不容易記,所以想做一個查詢,把它們都查出來 2. 檢視系統中用到的包中所包含的儲存過程,函式等 SELECT U.PACKAGE_NAME AS 包名, U.OBJECT_NAME AS 方法 FRO

修改MySQL儲存過程函式、事件、觸發器、檢視的DEFINER

#修改儲存過程、函式、事件、觸發器、檢視的 DEFINER select definer from mysql.proc; update mysql.proc set definer='[email protected]%'; select DEFINER fro