當前位置:九游会j9娱乐平台-九游ag登录中心网址 » 存儲配置 » mysql存儲過程like

mysql存儲過程like-九游会j9娱乐平台

發布時間: 2024-01-18 04:21:21

a. mysql存儲過程中like子句字元串變數怎麼用

試試 like concat('%',@word,'%')
如果有幫助到你,請點擊採納

b. mysql 存儲過程 是什麼意思

用select...into語句

下面是mysql 5.0的幫助文檔的:
這個select語法把選定的列直接存儲到變數。因此,只有單一的行可以被取回。

select id,data into x,y from test.t1 limit 1;
注意,用戶變數名在mysql 5.1中是對大小寫不敏感的。請參閱9.3節,「用戶變數」。

重要: sql變數名不能和列名一樣。如果select ... into這樣的sql語句包含一個對列的參考,並包含一個與列相同名字的局部變數,mysql當前把參考解釋為一個變數的名字。例如,在下面的語句中,xname 被解釋為到xname variable 的參考而不是到xname column的:

create procedure sp1 (x varchar(5))
begin
declare xname varchar(5) default 'bob';
declare newname varchar(5);
declare xid int;

select xname,id into newname,xid
from table1 where xname = xname;
select newname;
end;
當這個程序被調用的時候,無論table.xname列的值是什麼,變數newname將返回值『bob』。

c. mysql 存儲過程

.關於mysql的存儲過程

存儲過程是資料庫存儲的一個重要的功能,但是mysql在5.0以前並不支持存儲過程,這使得mysql在應用上大打折扣。好在mysql 5.0終於開始已經支持存儲過程,這樣即可以大大提高資料庫的處理速度,同時也可以提高資料庫編程的靈活性。

mysql存儲過程的創建

(1).格式

mysql存儲過程創建的格式:create procedure過程名([過程參數[,...]])
[特性...]過程體

這里先舉個例子:

  • mysql>delimiter//

  • mysql>createprocedureproc1(outsint)

  • ->begin

  • ->selectcount(*)intosfromuser;

  • ->end

  • ->//

  • mysql>delimiter;


  • 註:
  • (1)這里需要注意的是delimiter //和delimiter ;兩句,delimiter是分割符的意思,因為mysql默認以";"為分隔符,如果我們沒有聲明分割符,那麼編譯器會把存儲過程當成sql語句進行處理,則存儲過程的編譯過程會報錯,所以要事先用delimiter關鍵字申明當前段分隔符,這樣mysql才會將";"當做存儲過程中的代碼,不會執行這些代碼,用完了之後要把分隔符還原。

    (2)存儲過程根據需要可能會有輸入、輸出、輸入輸出參數,這里有一個輸出參數s,類型是int型,如果有多個參數用","分割開。

    (3)過程體的開始與結束使用begin與end進行標識。

d. mysql 存儲過程總結(一)

1、存儲過程定義:

存儲過程是事先經過編譯並存儲在資料庫中的一段 sql 語句的集合,調用存儲過程可以簡化應用開發 人員的很多工作,減少數據在資料庫和應用伺服器之間的傳輸,對於提高數據處理的效率是有好處的。 存儲過程思想上很簡單,就是資料庫 sql 語言層面的代碼封裝與重用。

2、特點:

封裝,復用 : 可以把某一業務sql封裝在存儲過程中,需要用到 的時候直接調用即可。

可以接收參數,也可以返回數據 :再存儲過程中,可以傳遞參數,也可以接收返回 值。

減少網路交互,效率提升 : 如果涉及到多條sql,每執行一次都是一次網路傳 輸。 而如果封裝在存儲過程中,我們只需要網路交互一次可能就可以了。

3、基本語法

(1)創建:

(2)調用:

(3)查看:

(4)刪除

注意: 在命令行中,執行創建存儲過程的sql時,需要通過關鍵字 delimiter 指定sql語句的 結束符。

e. mysql怎麼讓一個存儲過程定時執行

mysql怎麼讓一個存儲過程定時執行
查看event是否開啟: show variables like '%sche%';
將事件計劃開啟: set global event_scheler=1;
關閉事件任務: alter event e_test on completion preserve disable;
開戶事件任務: alter event e_test on completion preserve enable;

簡單實例.
創建表 create table test(endtime datetime);

創建存儲過程test
create procedure test ()
begin
update examinfo set endtime = now() where id = 14;
end;

創建event e_test
create event if not exists e_test
on schele every 30 second
on completion preserve
do call test();

每隔30秒將執行存儲過程test,將當前時間更新到examinfo表中id=14的記錄的endtime欄位中去

1) 首先來看一個簡單的例子來演示每秒插入一條記錄到數據表

use test;
create table aaa (timeline timestamp);
create event e_test_insert
on schedule every 1 second
do insert into test.aaa values (current_timestamp);
等待3秒鍾後,再執行查詢看看:

mysql> select * from aaa;
---------------------
| timeline |
---------------------
| 2007-07-18 20:44:26 |
| 2007-07-18 20:44:27 |
| 2007-07-18 20:44:28 |
---------------------
2) 5天後清空test表:

create event e_test
on schedule at current_timestamp interval 5 day
do truncate table test.aaa;
3) 2007年7月20日12點整清空test表:

create event e_test
on schedule at timestamp '2007-07-20 12:00:00'
do truncate table test.aaa;
4) 每天定時清空test表:

create event e_test
on schedule every 1 day
do truncate table test.aaa;
5) 5天後開啟每天定時清空test表:

create event e_test
on schedule every 1 day
starts current_timestamp interval 5 day
do truncate table test.aaa;
6) 每天定時清空test表,5天後停止執行:

create event e_test
on schedule every 1 day
ends current_timestamp interval 5 day
do truncate table test.aaa;
7) 5天後開啟每天定時清空test表,一個月後停止執行:

create event e_test
on schedule every 1 day
starts current_timestamp interval 5 day
ends current_timestamp interval 1 month
do truncate table test.aaa;
[on completion [not] preserve]可以設置這個事件是執行一次還是持久執行,默認為not preserve。
8) 每天定時清空test表(只執行一次,任務完成後就終止該事件):

create event e_test
on schedule every 1 day
on completion not preserve
do truncate table test.aaa;
[enable | disable]可是設置該事件創建後狀態是否開啟或關閉,默認為enable。
[comment 『comment』]可以給該事件加上注釋。

三、修改事件(alter event)
alter event event_name
[on schedule schele]
[rename to new_event_name]
[on completion [not] preserve]
[comment 'comment']
[enable | disable]
[do sql_statement]
1) 臨時關閉事件

alter event e_test disable;
2) 開啟事件

alter event e_test enable;
3) 將每天清空test表改為5天清空一次:

alter event e_test
on schedule every 5 day;
四、刪除事件(drop event)
語 法很簡單,如下所示:

drop event [if exists] event_name
例如刪除前面創建的e_test事件

drop event e_test;
當然前提是這個事件存在,否則會產生error 1513 (hy000): unknown event錯誤,因此最好加上if exists

drop event if exists e_test;

create event test
on schedule at '2007-09-01 12:00:00' interval 1 day
on completion not preserve
do insert into yyy values('hhh','uuu');

解釋:從2007-09-01開始,每天對表yyy在12:00:00進行一個插入操作。而且只執行一次(on completion not preserve )

我的計劃任務為:

create event sysplan
on schedule at '2010-05-22 23:00:00' interval 1 day
on completion not preserve
do truncate table bjproj.ae_tmp;

三、通過設定全局變數event_scheler 的值即可動態的控制事件調度器是否啟用。
查看是否event_scheler開啟mysql> show variables like '%event%';
設置開啟mysql> set global event_scheler=on;
四、例子:

分鍾插入一條日誌:delimiter //create event `user_log_event` on schedule every 1
minute starts '2010-12-27 00:00:00' on completion not preserve enable do
begin insert into log set addtime=now();end//
調用存儲過程:delimiter
//create event `user_log_event` on schedule every 1 day starts
'2010-00-00 00:00:00' on completion not preserve enable do begin
call user_log_prov();end//

f. mysql存儲過程實現數據查詢與插入

insert into total_score_tmpd(
departmentnameend, staffid,
staffname,
countperhour,
skillscorediscount ,
dealcount ,
valuecount,
valuecountdiscount
)
select departmentname, staffid,
staffname,
3600/(select dealavgseconds from deal_name_type where dealid='121300')*avg(dealavgseconds/waitseconds) ,
round(3600/(select dealavgseconds from deal_name_type where dealid='121300')*avg(dealavgseconds/waitseconds)/(select max(sunvalue) from total_score_tmp33)*(select cast(optionvalue as decimal) from sys_info where optionname='工作技能權重'),2),
count(staffid),
sum(dealvalue),
round(sum(dealvalue)/(select max(sunvalue) from total_score_tmp44)*(select cast(optionvalue as decimal) from sys_info where optionname='工作效益權重'),2)
from deal_record
where departmentname like concat(departmentname2,'%') and dealdatetime between startdealdatetime and enddealdatetime
group by staffid;

insert into total_score_tmpc(departmentname , staffid,
staffname,
clientnum ,
evaluatescore ,
evaluatescorediscount)
select departmentname, staffid,
staffname,
count(staffid),
sum(evaluateprice),
round((sum(evaluateprice)/(select max(sunvalue) from total_score_tmp22))*(select cast(optionvalue as decimal) from sys_info where optionname='服務評價權重'),2)
from evaluate_record
where departmentname like concat(departmentname2,'%') and evaluatedatetime between startdealdatetime and enddealdatetime
group by staffid;

g. mysql存儲過程的基本用法有哪些

mysql存儲過程的基本用法有哪些
在外部程序訪問資料庫時(例如 php),要組織很多 sql 語句。

特別是業務邏輯復雜的時候,一大堆的 sql 和條件夾雜在 php 代碼中,讓人不寒而慄。現在有了 mysql 存儲過程,業務邏輯可以封裝存儲過程中,這樣不僅容易維護,而且執行效率也高。

一、mysql 創建存儲過程

"pr_add" 是個簡單的 mysql 存儲過程,這個mysql 存儲過程有兩個 int 類型的輸入參數 "a"、"b",返回這兩個參數的和。
復制代碼 代碼如下:
drop procere if exists pr_add;

計算兩個數之和
復制代碼 代碼如下:
create procere pr_add
(
a int,
b int
)
begin
declare c int;
if a is null then
set a = 0;
end if;
if b is null then
set b = 0;
end if;
set c = a b;
select c as sum;
/*
return c;
不能在 mysql 存儲過程中使用。return 只能出現在函數中。

*/
end;

二、調用 mysql 存儲過程
復制代碼 代碼如下:
call pr_add(10, 20);

執行 mysql 存儲過程,存儲過程參數為 mysql 用戶變數。
復制代碼 代碼如下:
set @a = 10;
set @b = 20;
call pr_add(@a, @b);

三、mysql 存儲過程特點

創建 mysql 存儲過程的簡單語法為:
復制代碼 代碼如下:
create procere 存儲過程名字()
(
[in|out|inout] 參數 datatype
)
begin
mysql 語句;
end;

mysql 存儲過程參數如果不顯式指定"in"、"out"、"inout",則默認為"in"。習慣上,對於是"in" 的參數,我們都不會顯式指定。

1. mysql 存儲過程名字後面的"()"是必須的,即使沒有一個參數,也需要"()"

2. mysql 存儲過程參數,不能在參數名稱前加"@",如:"@a int"。下面的創建存儲過程語法在 mysql 中是錯誤的(在 sql server 中是正確的)。 mysql 存儲過程中的變數,不需要在變數名字前加"@",雖然 mysql 客戶端用戶變數要加個"@"。
復制代碼 代碼如下:
create procere pr_add
(
@a int, -- 錯誤
b int -- 正確
)

3. mysql 存儲過程的參數不能指定默認值。

4. mysql 存儲過程不需要在 procere body 前面加 "as"。而 sql server 存儲過程必須加 "as" 關鍵字。
復制代碼 代碼如下:
create procere pr_add
(
a int,
b int
)
as -- 錯誤,mysql 不需要 "as"
begin
mysql statement ...;
end;

5. 如果 mysql 存儲過程中包含多條 mysql 語句,則需要 begin end 關鍵字。
復制代碼 代碼如下:
create procere pr_add
(
a int,
b int
)
begin
mysql statement 1 ...;
mysql statement 2 ...;
end;

6. mysql 存儲過程中的每條語句的末尾,都要加上分號 ";"
復制代碼 代碼如下:
...
declare c int;
if a is null then
set a = 0;
end if;
...
end;

7. mysql 存儲過程中的注釋。
復制代碼 代碼如下:
/*
這是個
多行 mysql 注釋。
*/
declare c int; -- 這是單行 mysql 注釋 (注意 -- 後至少要有一個空格)
if a is null then # 這也是個單行 mysql 注釋
set a = 0;
end if;

h. mysql存儲過程在游標中怎麼使用變數作為表明

(1)concat()//字元連接
(2)concat_ws()//使用指定的分隔符進行字元連接
(3)format()//數字格式化
(4)lower()//轉化小寫
(5)upper()//轉換大寫
(6)left()//獲取左側字元
(7)right()//獲取右側字元
(8)length()//取得字元串長度
(9)ltrim(),rtrim(),trim()//刪除前導、後續空格或者指定字元
(10)replace()//替換
(11)substring()//字元串截取
(12)[not] like//模式匹配——百分號%代表任意個字元;下劃線_代表任意一個字元

熱點內容
愛奇藝正義聯盟為啥不能緩存 發布:2024-01-20 00:52:13 瀏覽:248
caccess查詢資料庫 發布:2024-01-20 00:43:10 瀏覽:769
xp文件夾圖標更改 發布:2024-01-20 00:43:03 瀏覽:19
python和node 發布:2024-01-20 00:37:12 瀏覽:194
android拖拉 發布:2024-01-20 00:00:49 瀏覽:583
少兒編程課程體系介紹 發布:2024-01-20 00:00:48 瀏覽:846
我說你做下載ftp 發布:2024-01-20 00:00:47 瀏覽:8
安卓驅動培訓哪裡好 發布:2024-01-19 23:55:41 瀏覽:987
python轉為字元串 發布:2024-01-19 23:51:39 瀏覽:272
合同文件夾 發布:2024-01-19 23:50:52 瀏覽:740
网站地图